gpt4 book ai didi

javascript - JavaScript 重定向何时真正生效?

转载 作者:行者123 更新时间:2023-11-29 15:36:08 25 4
gpt4 key购买 nike

如果我在 ASP.NET 代码中使用服务器端重定向,我知道它会引发 ThreadAbortException,因此页面上的所有处理将立即停止并且重定向将立即发生(在“finally”子句之后)。

但是,假设我在 JavaScript block 内进行重定向(通过设置 location.href 或使用 location.replace),该重定向何时真正生效?

重新加载页面显然会卸载当前脚本 block ,但基于快速测试,重定向后的警报语句仍然有效。重定向是否仅在当前事件处理完成后才发生?更重要的是,这种行为是标准化的,还是只是一种事实上的约定?

最佳答案

好的,我自己做了一些测试。 Jerebear 就他所说的而言是正确的,如果你有一个直接发生在脚本标签内的重定向(即重定向在加载脚本标签时执行),那么这将停止在同一页面上加载任何其他脚本标签。所以如果你有类似的东西:

<script> a(); redirect(); b(); </script>
<script> c(); </script>

然后 a 和 b 会被执行,但 c 不会被执行,因为第二个脚本永远不会被加载。

然而,这只是故事的一部分。我真的在考虑当您由于事件(点击、计时器等)而重定向时会发生什么。答案是进行重定向根本不会停止页面上正在处理的事件。这意味着所有事件继续正常工作,直到新页面开始加载。

所以一般的答案是,在从服务器接收到新页面之前,重定向不会真正生效,尽管它确实具有不再加载任何脚本标签(并且可能不加载其他资源)的副作用当前页面。

关于javascript - JavaScript 重定向何时真正生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com