当我使用jQuery 打印预览插件单击“打印”时,会弹出以下错误和 Firebug:
Error: Permission denied to access property 'name'
if (window.frames[i].name == "print-frame") {
我不确定它的确切含义或如何纠正它。
当我使用jQuery 打印预览插件单击“打印”时,会弹出以下错误和 Firebug:
Error: Permission denied to access property 'name'
if (window.frames[i].name == "print-frame") {
我不确定它的确切含义或如何纠正它。
有一种方法可以解决这个问题,并且可以在所有主流浏览器上正常工作。Derick 在jQuery Print Preview 的 Github 页面上找到了这个解决方案。
这是解决方案,在第 44 行附近,您将看到以下代码:
// The frame lives
for (var i=0; i < window.frames.length; i++) {
if (window.frames[i].name == "print-frame") {
var print_frame_ref = window.frames[i].document;
break;
}
}
将上面的代码替换为:
print_frame_ref = print_frame[0].contentWindow.document;
问题解决了。
这是 Chrome 中的错误,我希望这清楚吗?
您的页面位于 ww.ubhape2.com 上,您正在访问 s7.addthis.com 上的框架
要解决此问题,请更改此行
<script type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4dfb00d56c76d2a5"></script>
指向您网站上的复制脚本。
您还必须编辑该脚本以仅访问您自己的站点。
这是 XSS 或跨站点脚本的示例。
然后我的问题变成了我可以编辑 jQuery 打印预览脚本以防止发生冲突吗?
不。
错误的关键在于 javascript 在另一方的上下文中运行,您无法将代码“注入”到其中。
这是由浏览器强制执行的。
如果不强制执行,那么互联网上的每个用户都会让他们的机器受到损害。
阅读谷歌搜索 XSS 以了解更多信息
然而,
如果您在服务器上托管 javascript(以及 iframe),那么问题就会消失。这是您的代码(和您的 iframe),您可以随意使用。