我试图找出用户何时离开指定页面。找出他何时使用页面内的链接进行导航是没有问题的,但是我有点需要标记一些东西,例如当他关闭窗口或键入另一个URL并按Enter时。第二个不是那么重要,但第一个是重要。所以这是一个问题:
我如何查看用户何时关闭我的页面(捕获window.close事件),然后……并没有什么关系(我需要发送AJAX请求,但是如果可以获取它以运行警报,我可以剩下的)。
有unload和beforeunloadjavascript事件,但是这些事件对于Ajax请求是不可靠的(不能保证在这些事件之一中发起的请求将到达服务器)。
unload
beforeunload
因此,强烈建议 不 要这样做,您应该寻找替代方法。
如果您确实需要此功能,请考虑使用“ ping”式的解决方案。每分钟发送一次请求,基本上告诉服务器“我还在这里”。然后,如果服务器超过两分钟未收到此类请求(您必须考虑延迟等),则认为客户端处于脱机状态。
另一个解决方案是使用unload或beforeunload执行Sjax请求(同步JavaScript和XML),但是完全不建议这样做。这样做基本上会冻结用户的浏览器,直到请求完成为止,他们不会喜欢(即使请求花费很少的时间)。