Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载Wikipedia页面并在本地打印_Javascript_Firefox_Google Chrome_Printing - Fatal编程技术网

Javascript 加载Wikipedia页面并在本地打印

Javascript 加载Wikipedia页面并在本地打印,javascript,firefox,google-chrome,printing,Javascript,Firefox,Google Chrome,Printing,这是一个奇怪的。我正在尝试以下内容 我有一个本地HTML和JavaScript文件,可以生成一个随机的Wikipedia页面。当我得到随机维基百科页面的URL时,我想把它发送到打印机。然而,Chrome和Firefox似乎都有一个真正的问题 在Chrome中,我得到一个错误: Unsafe JavaScript attempt to access frame with URL https://secure.wikimedia.org/wikipedia/en/w/index.php?title=

这是一个奇怪的。我正在尝试以下内容

我有一个本地HTML和JavaScript文件,可以生成一个随机的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'
其中
printWin()
是:

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

这是你遇到的安全策略问题。读和读

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

您可能仍然会断开链接。您可能还必须想出代理所有这些内容的方法——或者重写HTML。如果你这样做了,现在你就进入了版权的领域,我不确定当涉及到所有这些的时候会是什么

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


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

一个网站不能在另一个网站上执行操作;这叫做同源策略。嘿,谢谢1461,我会查看你发送的链接。关于合法性,我认为这应该是好的,因为我无论如何都不会改变内容。我也会多读一些:)
var printURL = "https://secure.wikimedia.org/wikipedia/en/w/index.php?"
infoWindow = window.open(printURL,'wiki');
setTimeout ( "printWin()", 2000 );
function printWin(){
    infoWindow.print();
    infoWindow.close();
}