检测用户何时离开网站

Detect when a user leaves a website

本文关键字:网站 离开 何时 用户 检测      更新时间:2023-09-26

我正在尝试创建自己的网站访问库(为了好玩),就像谷歌分析,我可以检测用户何时访问我的网站,他们查看什么页面等

是否有一种方法可以确定用户何时离开页面&/或永远离开网站?

我已经成功地编码(在python中)检测当用户第一次访问我的网站(使用cookie) &如何确定他们查看的页面。但是我不知道我如何才能检测到用户何时离开网站?

在javascript中是否有一种方法(也许我可以检测到页面/url何时发生变化?)。我知道在HTTP中有一个引荐头,告诉我用户来自哪里,也许当用户移动到另一个网站(在我的网站之外),我可以通知这一点(因为我将是那个HTTP请求中的引荐人)?我说的对吗?

可以使用jquery触发:

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

纯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>

只要用户遵守规则,onbeforeunload就会起作用。这意味着,关闭一个标签,或关闭窗口,或导航到另一个网站。
然而,你没有办法用javascript可靠地检测这一点,onbeforeunload在许多情况下不会触发,例如关闭浏览器(ctrl+q),浏览器崩溃,历史记录(返回)和opera,某些版本的chrome对onbeforeunload的支持有限。

如果您想以高精度检测它,您必须定期发送Ajax请求,显示用户"仍然活着"。将这些请求注册到数据库或文件中,并按时间顺序进行分析。
所以,如果你每隔20秒对数据库"ping"一次,你可以从非常简单的查询中知道浏览器在一段时间后没有"ping",并确定用户不再在网站上。

您可以将站点上的所有链接标记为内部链接或外部链接。它们必须指向您的站点,然后重定向到由用户选择的位置。在重定向之前,你可以把用户从你的网站上引开。

我最好把你的网站上的每个页面的小脚本(说每20-30秒),使一个GET请求到你的网站上的特定url。因此,您可以跟踪每个用户请求的数量

你可以在JavaScript中处理一个卸载事件。例如:

window.onunload = unloadPage;
function unloadPage()
{
 alert("unload event detected!");
}

不幸的是,当用户离开当前页面时,没有办法告诉他们实际要去哪里(不像进入页面时的引用)。

一个想法是,在卸载处理程序中设置一个变量(可能在数据库中)(通过AJAX调用或其他方式),然后如果用户在此之后不久进入另一个页面,则删除该变量。无论哪个记录未被删除(或停用-软删除),都是用户实际从您的网站反弹或关闭浏览器之前的最后退出事件。

可以绑定到窗口。

这两种方法都不太可靠。