【问题标题】:Load Wikipedia page and print locally加载维基百科页面并在本地打印
【发布时间】:2012-02-27 22:29:08
【问题描述】:

这是一个奇怪的问题。我正在尝试以下操作。

我有一个本地 HTML 和 JavaScript 文件,它生成一个随机的维基百科页面。当我获得随机维基百科页面的 URL 时,我想将其发送到打印机。但是,Chrome 和 Firefox 似乎都存在这个问题。

在 Chrome 中我得到一个错误:

Unsafe JavaScript attempt to access frame with URL https://secure.wikimedia.org/wikipedia/en/w/index.php?title=Popran_National%20Park&printable=yes from frame with URL my local
file. Domains, protocols and ports must match. </br>
gol.js:99Uncaught TypeError: Object [object DOMWindow] has no method 'print'

在 Firefox 中:

Permission denied to access property 'print' </br>
[Break On This Error] </br>
infoWindow.print();

你认为这可能是因为我在本地运行吗?

我生成新窗口的代码是:

var printURL = "https://secure.wikimedia.org/wikipedia/en/w/index.php?"
infoWindow = window.open(printURL,'wiki');
setTimeout ( "printWin()", 2000 );

printWin() 在哪里:

function printWin(){
    infoWindow.print();
    infoWindow.close();
}

【问题讨论】:

  • 一个网站不能在另一个网站上执行;称为同源策略。

标签: javascript firefox google-chrome printing


【解决方案1】:

这是您遇到的安全策略问题。阅读thisthis

您需要做的是通过服务器对 Wiki 页面运行 GET 请求。所以服务器充当代理。浏览器将允许这样做,因为从它的角度来看,内容与您的托管页面来自同一来源。

您可能仍然会收到损坏的链接。您可能还必须想出代理所有这些的方法——或者重写 HTML。如果你这样做,现在你就进入了版权领域,我不确定这一切是什么。

您是否允许通过服务器代理 Wikipedia 内容,从而掩盖其来源?也许你只要不改变内容。但是如果你调整 HTML 让它看起来像它本来的样子,那么你是坏孩子还是好孩子?我对此一无所知。

我想我已经回答了你的技术问题。

【讨论】:

  • 嘿,谢谢 1461,我会查看您发送的那些链接。关于合法性,我认为应该没问题,因为无论如何我都不会更改内容。也会阅读更多内容:)
猜你喜欢
  • 2010-12-26
  • 2011-09-21
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2016-03-27
  • 2016-10-11
相关资源
最近更新 更多