【问题标题】:notifying the server (XMLHttpRequest?) on the onunload event?在 onunload 事件上通知服务器(XMLHttpRequest?)?
【发布时间】:2010-08-14 09:47:56
【问题描述】:

当客户端离开页面时,是否可以通知服务器(发出带有一点数据的单个 HTTP 请求,响应不重要)?

我实际上是在使用带有 javascript 的 python-tornado comet 应用程序,不断保持与服务器的请求连接(该服务器在事件中被关闭并重新打开。基于此:https://launchpad.net/eftw)。

我没有找到一种简单的方法来调试它(特别是使用 FireBug)。这使得它很成问题。

哦,还有实际代码(因为无论如何它已经有点可用了):http://bazaar.launchpad.net/~hoverhell/xftw/trunk/files

【问题讨论】:

  • 哦。实际上,在大多数情况下我没有这样做,因为我没有找到任何真正可以接受的答案(或者,很少有人错过了实际答案)。我想我应该降低我对答案的完美偏好:)
  • @hell.orts.ru - 这是有效的,当他们通过谷歌到达时,next 人更应该找到一个可行的解决方案(或至少解释原因) :)

标签: javascript ajax comet tornado


【解决方案1】:

您不能以可靠的方式执行此操作,具体取决于浏览器和延迟,您的 XmlHttpRequest 很可能在它实际完成之前被杀死。

浏览器制造商希望(正确地,imo)尽快呈现下一页。 onbeforeunloadonunload 是清理事件,旨在快速处理任何遗留的变量,它们不打算等待......所以浏览器不会。由于较新的浏览器中的垃圾收集也得到了显着改善,浏览器等待这些事件的理由就更少了。

您可以在window.onbeforeunload 事件中发送请求...但它会到达服务器吗?也许吧。

【讨论】:

  • 不幸的是,在 onbeforeunload 函数/状态下,它似乎没有处理 XHR。或者,至少在我的情况下没有。
  • 另外:有什么方法可以调试页面关闭时发生的事情吗?
  • @hell.orts.ru - 您可以使用 Firebug 并打开“Persist”模式,以便在转到下一页时保留数据,这对我来说通常是最好的方法。
  • 啊。这实际上不是我所期望的,因为我的主题。页面没有任何外部链接。但是我可以专门为此添加一些,所以谢谢你的想法。
  • 有人可以告诉我如何做异步 XHR 吗?
猜你喜欢
  • 2012-02-10
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多