【发布时间】:2019-03-13 09:52:05
【问题描述】:
获取以下代码,通过网络服务器提供它,例如http-server(节点包)。我有一个示例服务器 here。
<meta http-equiv="Cache-Control" content="max-age=0"/>
<script>
window.onload = function() {
document.write('<script>history.pushState(null, null, "bar.html");console.log("passed");\u003c/script>');
}
</script>
请注意,Cache-Control 标头存在是因为 IE 出于某种原因主动缓存了该页面。这在我的测试过程中对我有帮助,但不是重现问题所必需的。
当我在 IE11 (Windows 10) 中加载页面时,我在控制台上打印了一个 SecurityError,没有 URL 更改,也没有打印“通过”。
在 Edge 16 中,我将“通过”打印到控制台,但 URL 没有更改。
在 Firefox 和 Chrome 中,这可以正常工作:URL 发生变化,我得到“通过”打印到控制台。
为什么 IE 会出现这种行为,我如何将 document.write() 与 pushState() 结合使用?我的意图是覆盖整个文档,而不是简单地附加到它(这就是我使用window.onload 的原因)。
【问题讨论】:
标签: javascript html internet-explorer internet-explorer-11