javascript 重定向(设置 window.location.href)后代码会发生什么?

IT技术 javascript firefox google-chrome cross-browser window.location
2021-03-07 11:49:17

我有以下 javascript 重定向代码,然后是更多代码。

window.location.href = '/someurl';
alert('hello');
alert('hello again');

这会导致浏览器不一致。

在 Firefox 中,第一个警报在被重定向之前的一瞬间是可见的。第二个警报根本不可见。

在 chrome 中,两个警报都会弹出,并且只有在两个警报都单击确定后才会发生重定向。

是否有一些可以解决这些差异的重定向后代码会发生什么的概念?如果重定向是异步的,那么 chrome 在做什么?我想了解正在发生的事情,以便我可以确定在更复杂的情况下要做什么,在这种情况下,重定向深埋在某些回调和其他逻辑中。

2个回答

面对即将到来的厄运,Javascript 会话将努力继续其使命。以这种方式编码被认为是不可预测的。……而且残忍。

浏览器会尝试执行代码,window.location.href = 'url'直到页面转到下一个网址,因此将执行的代码行数取决于浏览器的速度

谢谢,这似乎是合理的。我试图通过在重定向后添加一个长时间运行的循环来测试这一点。如果是速度问题,浏览器不会在循环期间随机重定向吗?无论循环中包含什么,chrome 和 firefox 似乎都执行所有代码(除非循环中有警报,在这种情况下,firefox 会转到重定向)。我不确定长时间运行的循环测试是否是最好的测试...
2021-04-29 11:49:17
@johnny5 我只是有我自己作为“资源”的经验,但MDN 文档可能有用......无论如何,正如 Billbad 所说,依赖代码遵循window.location.
2021-05-02 11:49:17
是的,我正在搜索规范以寻找我最终不得不使用变通方法的任何内容
2021-05-05 11:49:17
你说的对。也许不是速度,而是每个javascript函数的优先级
2021-05-09 11:49:17
@DaniloValente 你有任何资源来确认这一点吗
2021-05-14 11:49:17