0

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

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

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

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

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

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

4

1 回答 1

1

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

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

直到它获取新文档之后才执行。

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

于 2015-07-10T22:11:57.610 回答