加载维基百科页面并在本地打印

时间:2012-02-27 22:29:09

标签: javascript firefox google-chrome printing

这很奇怪。我正在尝试以下方法。

我有一个本地HTML和JavaScript文件,可生成一个随机的Wikipedia页面。当我获得随机Wikipedia页面的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();
}

1 个答案:

答案 0 :(得分:0)

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

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

你可能仍然会破坏链接。您可能必须想出代理所有这些的方法 - 或者重写HTML。如果你这样做,现在你进入了版权之国,我不确定当涉及到这一切时会发生什么。

您是否可以通过服务器代理维基百科内容,从而掩盖其来源?只要你不改变内容,也许你就是这样。但是如果你调整HTML以使其看起来像是看起来那样,那么你是一个坏男孩还是一个好男孩?我对此一无所知。

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