JavaScript重定向何时真正生效
When does a JavaScript redirect actually take effect?
如果我在ASP.NET代码中使用服务器端重定向,我知道它会引发ThreadAbortException,因此页面上的所有处理都将立即停止,重定向将立即发生(在"finally"子句之后)。
然而,假设我在JavaScript块内进行重定向(通过设置location.href或使用location.replace),这个重定向什么时候真正生效?
重新加载页面显然会卸载当前脚本块,但根据快速测试,重定向后的警报语句仍然有效。重定向是否只在当前事件处理完成后发生?更重要的是,这种行为是标准化的,还是仅仅是一种事实上的惯例?
好吧,我已经做了更多自己的测试。Jerebear说得很对,如果你有一个直接发生在脚本标记内部的重定向(即当加载脚本标记时执行重定向),那么这将停止在同一页面上加载任何其他脚本标记。所以如果你有这样的东西:
<script> a(); redirect(); b(); </script>
<script> c(); </script>
则执行a和b,但不执行c,因为永远不会加载第二个脚本。
然而,这只是故事的一部分。我真的在想,当你因事件(点击、计时器等)而重定向时会发生什么。答案是,重定向根本不会停止页面上正在处理的事件。这意味着在新页面开始加载之前,所有事件都将继续正常工作。
因此,一般的答案是,在从服务器接收到新页面之前,重定向不会真正生效,尽管它确实有不在当前页面上加载任何脚本标记(可能也不加载其他资源)的副作用。
重定向发生在处理"script"标记集中的所有内容的末尾。这样,DOM可以在处理单个操作时将脚本标记中的所有内容放入内存。
如果在第二组脚本标记中进行处理,则这些指令将被忽略。
相关文章:
- 通过javascript重定向html传递php变量
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 使用angular重定向到html页面
- 如何在chrome扩展中重定向到html页面
- 无法从jquery Mobile导航栏重定向到另一个页面
- ng视图外的链接重定向到ng视图内的页面
- 在phonegap应用程序内部重定向不起作用
- CORS-重定向到第二个GET正在接收的页面
- AJAX不会在文件上传后重定向到网页-POST方法
- 重定向时角度刷新浏览器
- 通过链接重定向不;我不在jstree中工作
- 根据select选项元素将表单重定向到不同的URL
- 通过JQuery重定向到另一个页面
- 重定向到“父窗口”
- 重定向iFrame中的父URL
- JavaScript重定向何时真正生效
- 单击社交媒体图标(字体真棒)而未重定向到href
- 重定向确认为真
- Javascript表单提交确认与重定向,如果为真
- 如果javascript中的条件为真,我想重定向到另一个页面