浏览器在执行“卸载”处理程序之前发送http请求

时间:2015-07-10 20:30:02

标签: javascript onunload window.onunload

我刚发现以下内容(通过为客户端和服务器端代码设置多个断点):

如果你有一个window.onunload处理程序 - 它将在浏览器将http请求发送到新页面后执行

  1. 您导航到下一页
  2. 浏览器将http请求发送到新页面
  3. 浏览器执行卸载处理程序,只是暂停渲染过程,直到完成执行。
  4. 显示新页面。
  5. 我刚刚使用Chrome和Firefox进行了测试。

    为什么?您认为这种奇怪行为的原因是什么?

    PS。以下是我发现这一点的方法:我有一个卸载处理程序,它通过ajax保存了一些数据。然后我发现我正在导航的新页面仍然显示来自数据库的旧数据。这让我想到了......

1 个答案:

答案 0 :(得分:1)

HTML规范有一个Navigating across documents部分,用于描述您在浏览器中导航到新页面时的过程(例如,通过关注链接)。说的步骤

  

卸载当前条目的Document对象,并将recycle参数设置为false。

在获取新文档之后才会执行

这似乎是因为跟随链接可能并不总是导致卸载当前文档。例如,如果回复包含Content-disposition: attachment,则会下载链接的目标,但不会卸载当前页面。