我遇到的问题是window.open只出现在Opera(版本11.5)中。
function openpageopera()
{
var w = window.open("","_blank");
try
{
w.document.write("<p>hello</p>world");
w.document.close();
}
catch(err)
{
alert("error:" + err);
}
}
现在,当我在页面加载后执行此函数时,它可以完美地运行,ergo:
$(document).ready(function() {
openpageopera();
});
如果我从我的网络服务器打开谷歌,雅虎甚至网页等网址,它也会有效。
但是,当我将它附加到onclick事件时,就像在HTML按钮上一样,它会失败。
<input type="button" value="Fails" onclick="openpageopera();">
具体失败了什么?好吧,页面确实打开了,但它是空白的。 document.write不起作用。渔获物注意到错误:
错误:ReferenceError:安全错误:尝试读取受保护的变量:write
我不明白为什么在html按钮上执行此操作会引发安全性错误。为什么会发生这种情况?如何解决?
非常感谢你的帮助!
答案 0 :(得分:4)
如果代码设置document.domain
,则可能会更改父网页的安全上下文。 (如果将document.domain设置为其当前值,也会发生这种情况。)当您打开“”或about:blank时,应继承父级的安全上下文,而document.write()
应该有效 - 但我知道Opera在过去有一些错误,设置document.domain会在处理空弹出窗口时引起问题。我相信这些错误在11.50修复,但似乎你遇到了类似的问题。如果可以,请避免设置document.domain ..
如果您再次发现此问题,请告知我们,最好让我看一下完整的代码。我喜欢在每个化身中指出这个错误。
BTW,请记住,用户JS,扩展,甚至是从插件触发的JS也可能会使用document.domain,因此请尝试禁用任何可能会干扰的内容。答案 1 :(得分:1)
我在Opera浏览器中清除了所有私人数据,但它确实有效。但是,每次加载页面时,我都确保按shift或ctrl刷新清除缓存。无论是缓存问题还是其他问题。