如何检测用户何时离开网站?

时间:2014-11-13 05:28:25

标签: javascript php disconnect

我正在阅读这个问题:Trying to detect browser close event

但它不够全面,或者至少我不确定,我需要检测用户何时离开网站,这可能是:

  • 互联网已经死亡
  • PC关机(例如停电)
  • 用户关闭浏览器
  • 用户关闭运行网站的浏览器标签

我确信还有更多案例。

这可能需要由服务器管理,而不是在极端情况下不会被触发的某些javascript事件。

在这种情况下可以使用哪些想法?。

5 个答案:

答案 0 :(得分:5)

您可以使用socket.io并在套接字丢失时进行侦听,或者您可以让您的站点向服务器发送心跳,如果X毫秒没有脉冲,您可以假设用户离开了任何一个你列出的原因。

答案 1 :(得分:1)

我正在使用Java Script检测离开事件并将ajax请求发送到我的服务器,以便可以存储用户离开页面的事件。 第二部分是检测用户在我页面中的时间,每3秒我还会向数据库发送一个ajax请求以节省用户在页面中的时间。

<script>



window.onbeforeunload = function(){//If user left the page
    user_left_page();
};
function user_left_page(){//USER LEFT THE PAGE send data to php to store into my database
    var action = "left_page";
    $.ajax({
        url:"includes/track-page-time.inc.php",
        method:"POST",
        data:{ action: action},
        success: function(data){
        },
    });
}
//This one below is to store the time the user is spending in your page. I am using both
// in my code, basically I keep storing the data every 3 seconds to know the time
setInterval(function () {
    update_user_activity();
}, 3000);//Interval time to send the info to the database

function update_user_activity(){//IS USER IN THE PAGE?
    var action = "update_time";
    $.ajax({
        url:"includes/track-page-time.inc.php",
        method:"POST",
        data:{ action: action},
        success: function(data){
        },
    });
}



</script>

答案 2 :(得分:0)

您可以使用window.onbeforeunload来处理最后两种情况,即检测浏览器关闭或制表符关闭事件。对于电源故障或连接问题的前两个事件,只能连续执行ping或like AlienWebguy said心跳机制。

答案 3 :(得分:0)

另一种可以跟踪IP /会话ID并保存在数据库中的简单方法,您可以在一个时间间隔内使用ajax调用更新数据库中的时间,即每隔5或10分钟。

如果用户没有采取任何活动并且时间不会更新,如果db中的时间小于时间() - $ interval ,则可以假设用户已离开,丢失连接等。

答案 4 :(得分:-2)

 window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
  }

Ref site