【问题标题】:Browser sends http request BEFORE executing the "unload" handler浏览器在执行“卸载”处理程序之前发送 http 请求
【发布时间】:2015-07-10 20:30:02
【问题描述】:

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

如果您有 window.onunload 处理程序 - 它将在浏览器向新页面发送 http-request 后执行

  1. 您导航到下一页
  2. 浏览器向新页面发送http-request
  3. 浏览器执行卸载处理程序并暂停渲染过程,直到完成执行。
  4. 显示新页面。

我刚刚用 Chrome 和 Firefox 测试了这个。

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

附言。我是这样发现的:我有一个卸载处理程序,它通过 ajax 保存了一些数据。然后我发现我正在导航的新页面 - 仍然显示来自数据库的旧数据。这让我开始思考......

【问题讨论】:

    标签: javascript onunload window.onunload


    【解决方案1】:

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

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

    在获取新文档之前不会执行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2014-12-06
      • 1970-01-01
      相关资源
      最近更新 更多