我刚刚在 Firefox 3.6/Mac 中遇到了一些奇怪的行为。不过,我怀疑这是一般的 Firefox 行为。
我创建了两个非常简单的测试页面,它们更改window.location.href
属性以导航到新 URL:
- http://troy.onespot.com/static/stack_overflow/redirect.html
- http://troy.onespot.com/static/stack_overflow/redirect_timeout.html
如果您对任一文件尝试以下操作:
- 打开一个新的/空白浏览器选项卡。
- 粘贴 URL 并点击“Enter”。
您会注意到两者之间的一个区别:使用第一个链接时,浏览器的“返回”按钮被禁用;使用第二个,它已启用并按我的预期工作。
两个脚本之间的唯一区别是后者在更改之前设置了一秒超时window.location.href
。
我不知道为什么会发生这种情况,我正在尝试实现第二个脚本的行为(“返回”按钮继续按预期工作),而不会给用户造成任何延迟。
window.location.href
我最好的猜测是,也许 Firefox 通过设置与使用该方法相同的方式来处理立即“重定向” window.location.replace()
,因为我认为开发人员在打算使用后者时使用前者是很常见的。也许使用setTimeout
,因为这会导致代码异步运行,会破坏这种行为。会是这样吗?
我还没有尝试过最小的值setTimeout
来达到预期的效果,但我现在会这样做。不过,我想弄清楚为什么会发生这种情况。
谢谢!