检测用户何时离开网站

Mac*_*ack 22 html javascript http

我正在尝试创建自己的网站访问库(为了好玩),例如Google Analytics,我可以检测用户何时访问我的网站,他们查看的页面等.

有没有办法确定用户何时离开页面和/或离开网站?

我已成功编码(在python中)用户1st访问我的网站(使用cookie)时的检测以及如何确定他们查看的页面.但我不知道当用户离开网站时我怎么能检测到它?

在javascript中是否有一种方法(也许我可以检测到页面/网址何时发生变化?).我知道在HTTP中有一个引用标题告诉我用户来自哪里,也许当用户移动到另一个网站(我的外面)时,我可以得到通知(因为我将成为该HTTP请求中的引用者) ?我对么?

hoo*_*ood 22

使用jquery你可以触发这个:

$(window).bind('beforeunload', function() {
    // ajax call perhaps
    // triggering a write to db or filesystem...
});
Run Code Online (Sandbox Code Playgroud)

纯javascript方式:

<html>
<head>
<script>
function closeIt()
{
  return "Any string value here forces a dialog box to \n" + 
         "appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
  <a href="http://www.somewhere.com">Click here to navigate to 
      www.somewhere.com</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


小智 7

只要用户按规则玩游戏,您就可以使用onbeforeunload.这意味着,关闭选项卡,关闭窗口或导航到另一个站点.
但是,你无法用javascript可靠地检测到这一点,onbeforeunload在许多情况下都不会触发,例如关闭浏览器(ctrl + q),浏览器崩溃,历史(后退)和opera以及某些版本的chrome都有限支持onbeforeunload.

如果要以高精度检测它,则必须定期发送Ajax请求,以显示用户"仍然活着".在数据库或文件中注册这些请求,并按时间顺序对其进行分析.
因此,如果您每20秒"ping"一次数据库,您可以从非常简单的查询中了解到浏览器在一段时间后没有"ping",并确定用户不再在该站点中.