当前位置:  开发笔记 > 编程语言 > 正文

更改window.location是否会停止执行javascript?

如何解决《更改window.location是否会停止执行javascript?》经验,为你挑选了2个好方法。

在编写服务器端代码时,您需要在向客户端发送"Location:..."标头后明确停止执行,否则您的代码将继续在后台执行.

但是当你在客户端脚本中更改window.location时呢?这是否会立即停止执行当前脚本,还是由程序员决定是否确保未达到此调用后的任何代码?



1> bobince..:

这是否会立即停止执行当前脚本

不,剩余的处理程序脚本将在控制返回浏览器并且事件开始发生之前执行到最后.当加载新页面足够"导航"时,将触发beforeunloadunload事件,然后页面及其中的任何脚本将变为非活动状态.

但是,任何进一步的排队事件和超时可能不会触发.例如,如果您在click表单提交按钮的处理程序中导航页面并且不取消默认操作,则可能(竞争条件)导航在submit由默认操作排队的事件之前发生click.


谢谢.作为这个问题的推论,有没有办法检测你何时处于这种状态(即`window.location`已经改变但导航还没有发生)?

2> Jimmy Cuadra..:

设置window.location不会隐式停止JS执行.以下面的例子为例:

function locationTest() {
  window.location = 'http://www.google.com/';
  window.open('http://www.yahoo.com/');
}

locationTest();

尝试从Firebug/Web Inspector/etc运行它.你会注意到当前窗口将加载谷歌,但是雅虎也会打开一个新窗口.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有