重定向页面并阻止页面的其余部分加载和脚本执行。

4
我需要在页面开始加载时重定向页面(例如,页面的头部已经加载),一旦重定向,就要防止/停止页面内容和脚本的执行。如果我将此代码(window.location = "/other-page-url";)放置在打开HEAD标签后的第一行并将页面重定向到另一个页面,那么它会停止执行下一个脚本吗?我想确保,如果在重定向后的第二行有某些计数器脚本被调用,它不会执行。也许JavaScript有一些方法可以停止页面的加载/渲染?

我建议不要在客户端发起重定向,而是发送一个 Location: ... 头部,在页面渲染之前请求重定向。 - Rob W
3个回答

0

我在Windows上的Chrome中进行了广泛测试,并从https://dev59.com/NXRC5IYBdhLWcg3wAcbU#24070373的讨论中做了笔记。为了阐述Joseph Silbur的答案:

一旦您将用户重定向到另一个页面,当前页面将立即停止执行。

head标签内的JavaScript会在文档主体中任何脚本标签之前执行。虽然Chrome会请求标签内的


0
你可以在任何 JavaScript 执行之前,在你的 <head> 中使用 <meta> 标签,在任何 <script> 标签之前完成这个操作:
<meta http-equiv="Refresh" content="0; url=http://www.example.com/">

一旦浏览器遇到该标签,它将重定向到example.com。


-3

一旦您将用户重定向到另一个页面,当前页面将立即停止执行。


这是否意味着用户在页面本身不会注意到任何变化,除了地址栏中的URL更改?我的意思是,如果计算机或互联网连接速度较慢,他们是否会看到页面的渲染? - mra214
@mra214 - 正确。用户在页面上看不到任何渲染内容。 - Joseph Silber
9
我遇到了同样的问题,在 window.location = "/new_url" 之后,添加一些跟踪代码到 console.log,显示脚本执行在重定向后并没有停止。我使用的是OSX上的Chrome浏览器,尚未在其他浏览器上测试,但至少证明该行为在所有浏览器中并不一致。 - Shyam Habarakada
2
我发现这并不完全正确。如果我在window.location之后立即放置一个alert,它仍然会被触发,因此我认为页面停止执行并重定向之前有一小段延迟。 - nxtwrld
3
这是一个糟糕的答案。如果在回调函数中进行重定向,代码仍将在主函数中执行,只有在此之后才会发生重定向。 - Sorin Trimbitas
@SorinTrimbitas:“如果我将这段代码放置在打开HEAD标签后的第一行,并将页面重定向到另一个页面,它会停止执行下一个脚本吗?” 答案:是的。 - Joseph Silber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接