检测用户何时离开网站

时间:2011-04-07 03:06:10

标签: javascript html http

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

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

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

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

5 个答案:

答案 0 :(得分:21)

使用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>

答案 1 :(得分:7)

只要用户遵守您希望onbeforeunload工作的规则。这意味着,关闭选项卡,关闭窗口或导航到另一个站点 但是,您无法使用javascript可靠地检测到这一点,在很多情况下,onbeforeunload都会触发,例如关闭浏览器(ctrl + q),浏览器崩溃,历史记录(返回)以及Opera和某些版本的chrome对onbeforeunload的支持有限。

如果要使用高精度检测它,则必须定期发送Ajax请求,以显示用户是否仍然活着&#34;。在数据库或文件中注册这些请求,并按时间顺序对其进行分析。
所以,如果你&#34; ping&#34;数据库每20秒就可以通过非常简单的查询得知浏览器没有&#34;#34;#34;片刻之后,确定用户不再在该网站中。

答案 2 :(得分:1)

您可以在JavaScript中处理卸载事件。例如:

window.onunload = unloadPage;

function unloadPage()
{
 alert("unload event detected!");
}

不幸的是,当他们离开当前页面时,没有办法告诉用户实际去哪里(与推荐者不同,当你进入页面时)。

一个想法是,在卸载处理程序中设置一个变量(可能在数据库中)(通过AJAX调用或不通过),然后在用户不久之后进入另一个页面时将其删除。在用户实际退出您的网站或关闭浏览器之前,无法删除(或停用 - 软删除)的记录是您的最后退出事件。

答案 3 :(得分:1)

您可以将网站上的所有链接标记为内部或外部链接。他们必须指向您的网站,然后重定向到用户选择的位置。在重定向之前,您可以指出该用户离开您的网站。

但是

我最好在你网站的每个页面上添加一个小脚本(比如每20-30秒)向你网站上的特定网址发出GET请求。因此,您可以跟踪每个用户请求的数量。

答案 4 :(得分:0)

您可以绑定到window.beforeunload或window.unload。

但这些方法都不是非常可靠。