检测用户何时离开网页的最佳方法?
检测用户是否离开网页的最佳方法是什么?
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(); } });
不利的一面是,当然这是一个猜测 ,用户实际上打算离开,但在绝大多数情况下,这是正确的。