【问题标题】:Internet explorer window.resize fails after using document.write使用 document.write 后 Internet Explorer window.resize 失败
【发布时间】:2013-06-30 13:42:28
【问题描述】:

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

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

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

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

document.write("test"); 

此后window.resize 将为空。

这可能是意料之中的,因为 document.write 调用 document.open 会清除所有内容。

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

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

【问题讨论】:

  • 您是否尝试过允许被阻止的内容(js 有时会被阻止)?
  • FYI
  • 一个小问题:如何将window.onresize 添加回文档?

标签: javascript internet-explorer events dom


【解决方案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 的站点不同。并且浏览器不允许来自一个站点的页面中的脚本在另一个站点的页面中调用脚本(以避免跨站点脚本攻击)。因此,您无法从具有空 URL 的页面调用“http://www.yoursite.com/Page1.aspx”中定义的函数。因此,您必须编写脚本代码将其自身放入新文档中。

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2012-03-18
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多