Bun*_*gle 5 javascript firefox redirect settimeout location-href
我刚刚在Firefox 3.6/Mac中遇到过一些奇怪的行为.我怀疑这是一般的Firefox行为.
我创建了两个简单的测试页面,用于更改window.location.href属性以导航到新URL:
如果您使用以下任一文件尝试以下操作:
您会注意到两者之间的一个区别:使用第一个链接,浏览器的"后退"按钮被禁用; 使用第二个,它启用并按照我的预期工作.
两个脚本之间的唯一区别是后者在更改之前设置了一秒的超时window.location.href.
我不知道为什么会发生这种情况,我正在尝试实现第二个脚本的行为("后退"按钮继续按预期工作),而不会给用户造成任何延迟.
我最好的猜测是,Firefox可能通过设置window.location.href与使用该window.location.replace()方法相同来立即"重定向" ,因为我认为开发人员在使用后者时使用前者是很常见的.也许使用setTimeout,因为这导致代码异步运行,失败了这种行为.可能是这样吗?
我没有尝试setTimeout达到预期效果的最小值,但我现在就这样做了.我想弄清楚为什么会发生这种情况.
谢谢!
我最好的猜测是,也许 Firefox 通过设置 window.location.href 来处理立即“重定向”,就像使用 window.location.replace() 方法一样,因为我认为开发人员在打算使用时使用前者是很常见的后者。也许使用 setTimeout 会导致代码异步运行,从而阻止这种行为。难道是这样吗?
我被告知你的猜测是正确的,但现在我看, HTML5 规范中似乎没有提及此要求(链接到最相关的页面,因为很难链接到缺乏要求)。