3

在 Firefox 中,在每个 document.write() 新的历史条目被创建之后,所以如果 document.write() 在用户按下返回按钮返回历史记录时在页面加载时被调用,firefox 会将他带到运行 document.write( ) 再次创建另一个历史记录,因此即使再按一次后退按钮也无济于事,无法将他带到他想要的地方

简单的解决方法是:

function onbeforeunload(e) 
{
    setTimeout(function() { window.history.go(-2);  }, 0);
}
window.addEventListener("beforeunload", onbeforeunload, true);

但是它不会让用户去任何链接或在地址栏中输入任何地址并去那里,那么还有另一种方法来修复firefox吗?

更好的方法是使用onpopstate事件,但它在 document.write() 之后在 firefox 中不起作用

不,这里必须使用document.write() 。

4

2 回答 2

5

使用document.open("text/html", "replace")而不仅仅是document.open().

奇迹般有效。

有趣的是,其他解决方法不起作用 - 例如,$('html').replaceWith(pageContent)如果浏览器是 Firefox,则操作历史记录......

于 2015-09-20T09:12:00.543 回答
0

用于在保持历史不变的document.open情况下运行:document.write

<script>
  document.open("text/html",document.write("foo") );
</script>

参考

于 2014-03-25T18:47:12.513 回答