一尘不染

JavaScript,浏览器,关闭窗口-在关闭窗口时发送AJAX请求或运行脚本

javascript

我试图找出用户何时离开指定页面。找出他何时使用页面内的链接进行导航是没有问题的,但是我有点需要标记一些东西,例如当他关闭窗口或键入另一个URL并按Enter时。第二个不是那么重要,但第一个是重要。所以这是一个问题:

我如何查看用户何时关闭我的页面(捕获window.close事件),然后……并没有什么关系(我需要发送AJAX请求,但是如果可以获取它以运行警报,我可以剩下的)。


阅读 1151

收藏
2020-04-25

共1个答案

一尘不染

unloadbeforeunloadjavascript事件,但是这些事件对于Ajax请求是不可靠的(不能保证在这些事件之一中发起的请求将到达服务器)。

因此,强烈建议 要这样做,您应该寻找替代方法。

如果您确实需要此功能,请考虑使用“
ping”式的解决方案。每分钟发送一次请求,基本上告诉服务器“我还在这里”。然后,如果服务器超过两分钟未收到此类请求(您必须考虑延迟等),则认为客户端处于脱机状态。


另一个解决方案是使用unloadbeforeunload执行Sjax请求(同步JavaScript和XML),但是完全不建议这样做。这样做基本上会冻结用户的浏览器,直到请求完成为止,他们不会喜欢(即使请求花费很少的时间)。

2020-04-25