0

这可能是 Internet Explorer (IE9) 中的一个错误,想知道它是否已知或有解决方法。

可以通过打开开发控制台并执行这些命令中的每一个来重现它,

window.onresize = function() { alert("onresize"); }

此时,当您调整窗口大小时,事件会按预期触发。现在执行,

document.write("test"); 

在此点之后window.resize将为空。

这可能是预期的,因为document.write呼叫document.open清除了所有内容。

但是,即使您添加回事件处理程序,它也永远不会触发,

window.onresize = function() { alert("onresize"); } 
4

1 回答 1

1

您必须将整个脚本块写入新文档。例如:

document.write("<div>some html</div><script>window.onsize=function() { alert('onresize'); } </script>

这是因为当您调用 document.write 时,它​​会创建一个带有“空”url 的新文档。由于您的原始文档来自不同的 Url(例如,“ http://www.yoursite.com/Page1.aspx ”。空 Url 的站点与原始 Url 的站点不同。并且浏览器不允许一个站点的页面中的脚本调用另一个站点的页面中的脚本(以避免跨站点脚本攻击)。因此您无法调用“ http://www.yoursite.com/中定义的函数Page1.aspx " 来自具有空 URL 的页面。因此,您必须将脚本代码本身写入新文档。

于 2013-07-03T01:46:21.397 回答