点击链接后javascript何时停止在页面上运行?

时间:2013-05-08 12:46:49

标签: javascript

我有一个运行各种javascript代码的页面,包括调用setTimeout()。如果用户单击链接以导航到另一个页面,此页面上的javascript何时停止运行,因此将不再调用由setTimeout调用的代码? e.g。

  • 点击链接后(我知道这是错误的)
  • 当浏览器开始接收新页面时
  • 其他一点?

对于不同的主流浏览器,这是不同的吗?

背景

我想知道这主要是出于利益而不是解决任何特定问题。促使我思考这个问题的问题是,当用户点击页面上的特定链接时,我想做点什么。我想执行ajax调用并处理结果,但是我不太关心它是否在页面卸载之前完成。所以我会在链接点击时触发一个setTimeout()然后如果我很幸运它会完成但是如果我不是它就不会。我想知道在什么情况下它会起作用。虽然可能有其他解决方案来解决这个问题,但我不想解决问题,我只想知道问题的答案。

2 个答案:

答案 0 :(得分:3)

以下是发生的事情的顺序:

第1步:点击链接。这里浏览器向服务器发送请求并等待响应。当前页面的文档对象仍然存在。

第2步:浏览器收到响应。当前页面的文档对象仍然存在。

步骤3:浏览器解析,创建并呈现对新文档对象的响应。

步骤3是当前页面的JS将停止,除非您已将目标响应定位到iframe,例如。如果你这样做,那么新的文档对象将在iframe中呈现,当前页面的文档对象保持不变,JS仍然可以保持正常运行。

希望能回答你的问题!

答案 1 :(得分:0)

一种可能的解决方案是停止click事件,触发异步调用并在处理完ajax调用的结果后恢复默认事件。或者,如果可能,您可以处理服务器上的处理,在这种情况下您甚至不需要停止默认事件 - 只需触发异步调用。

在回答你的问题时,我同意Jack的说法,该脚本会在onunload事件后停止运行。

希望这一点。