检测用户何时离开网页的最佳方法?

检测用户是否离开网页的最佳方法是什么?

onunload JavaScript事件每次都不起作用(HTTP请求花费比终止浏览器所需的时间更长的时间)。

创build一个可能会被当前的浏览器阻止。

尝试onbeforeunload事件:它是在页面卸载之前触发的。 它也允许你询问用户是否真的想离开。 看演示onbeforeunload演示

或者,您也可以在离开时发送Ajax请求。

Mozilla开发者networking有一个很好的描述和onbeforeunload的例子。

为此,我正在使用:

 window.onbeforeunload = function (e) { } 

它在页面被卸载之前被触发。

一个(稍微黑客)的方式来做到这一点是取代和链接引导离开您的网站与服务器端的AJAX调用,指示用户将离开,然后使用相同的JavaScript块,使用户到外部网站他们已经要求了。

当然,如果用户简单地closures浏览器窗口或input新的URL,这将不起作用。

为了解决这个问题,你可能需要在页面上使用Javascript的setTimeout(),每隔几秒就会发出一次AJAX调用(取决于你想知道用户离开的速度有多快)。

我知道这个问题已经被回答了,但是如果你只想在实际的BROWSERclosures的时候触发一些东西,而不是当页面载入发生的时候,你可以使用下面的代码:

 window.onbeforeunload = function (e) { if ((window.event.clientY < 0)) { //window.localStorage.clear(); //alert("Y coords: " + window.event.clientY) } }; 

在我的示例中,我正在清除本地存储,并且只有当浏览器closures时,才会通过鼠标和坐标提醒用户,这将在程序内部的所有页面加载中被忽略。

这是另一种解决scheme – 因为在大多数浏览器中,导航控件(导航栏,标签等)位于页面内容区域的上方 ,可以通过顶部检测到离开页面的鼠标指针并显示“ 离开之前 ”对话。 这是完全不显眼的它允许您在用户实际执行离开操作之前与用户进行交互。

 $(document).bind("mouseleave", function(e) { if (e.pageY - $(window).scrollTop() <= 1) { $('#BeforeYouLeaveDiv').show(); } }); 

不利的一面是,当然这是一个猜测 ,用户实际上打算离开,但在绝大多数情况下,这是正确的。