【发布时间】:2012-05-18 12:41:26
【问题描述】:
我有以下 javascript 重定向代码,后跟一些代码。
window.location.href = '/someurl';
alert('hello');
alert('hello again');
这会导致浏览器不一致。
在 Firefox 中,第一个警报在重定向之前的瞬间可见。第二个警报根本不可见。
在 chrome 中,两个警报都会弹出,并且只有在两个警报都单击“确定”后才会发生重定向。
是否有一些关于重定向后代码会发生什么的概念可以解决这些差异?如果重定向是异步的,那么 chrome 在做什么?我想了解正在发生的事情,以便我可以确定在重定向深埋在某些回调和其他逻辑中的更复杂的场景中该怎么做。
【问题讨论】:
-
你为什么要在重定向后做任何事情?
-
这一切都取决于时间——一旦你改变了位置,你就不能依赖处理/渲染/等需要多长时间。
-
@Musa 实际上在重定向后不想做任何事情,这就是出现这个问题的原因。例如,如果重定向应该发生在从其他库的代码触发的回调中,则在库调用我的回调之后,库可能会执行其他内容。但是,如果我只想重定向页面而不运行其他东西,我可能需要做一些事情来阻止它正常运行,这取决于浏览器正在尝试做什么。
标签: javascript firefox google-chrome cross-browser window.location