当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《检测用户何时离开网页的最佳方法?》经验,为你挑选了5个好方法。

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

onunloadJavaScript事件,每次不工作(HTTP请求,而不是终止该浏览器所需要的时间需要更长的时间).

当前的浏览器可能会阻止创建一个.



1> Andreas Pete..:

尝试onbeforeunload事件:在卸载页面之前触发它.它还允许您回询用户是否真的要离开.查看演示onbeforeunload Demo.

或者,您可以在他离开时发出Ajax请求.


对于用户来说,如果你跟踪表单是否发生变化并且只是提示它,那将是很好的 - 所以这并不烦人.
另请注意,各种移动浏览器会忽略事件的结果(即,他们不会要求用户进行确认).Firefox在about:config中有一个隐藏的首选项来做同样的事情.实质上,这意味着用户始终确认可以卸载文档.
请注意,当用户刷新页面或提交表单时,也会调用此方法。
这将是检测网络上在线用户的好方法吗?

2> DuckMaestro..:

Mozilla Developer Network有一个很好的描述和onbeforeunload的例子.

如果您想要在离开页面之前警告用户,如果您的页面是脏的(即,如果用户输入了一些数据):

window.addEventListener('beforeunload', function(e) {
  var myPageIsDirty = ...; //you implement this logic...
  if(myPageIsDirty) {
    //following two lines will cause the browser to ask the user if they
    //want to leave. The text of this dialog is controlled by the browser.
    e.preventDefault(); //per the standard
    e.returnValue = ''; //required for Chrome
  }
  //else: user is allowed to leave without a warning dialog
});



3> suhailvs..:

为此,我使用:

window.onbeforeunload = function (e) {

}

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



4> rustyx..:

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

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

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



5> Merr Leader..:

我知道已经回答了这个问题,但是如果您只希望在关闭实际的BROWSER时(而不只是在发生页面加载时)触发某些内容,则可以使用以下代码:

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

在我的示例中,我正在清除本地存储并用鼠标y坐标警告用户,仅当关闭浏览器时,程序中所有页面加载时才会忽略此操作。

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有