检测用户是否已关闭网站的所有窗口?

时间:2014-07-21 12:50:42

标签: javascript browser

我知道这个:

window.onbeforeunload = function() {
   //tell server user has left your site
};

但有没有客户端方式使用javascript来检测用户是否关闭了您网站的所有浏览器窗口?

或者我是否需要服务器端代码来检测?

2 个答案:

答案 0 :(得分:4)

您可以将信息保存到LocalStorage以检测是否存在。

一些想法:在加载时,你将值写入sessionStorage:

window.onload = function() {
    if (sessionStorage.instances) {
        sessionStorage = Number(sessionStorage.instances) + 1;
    } else {
        sessionStorage.instances = 1
    }
}

并在卸载时减小值:

window.onbeforeunload = function() {
    var instances;

    if (sessionStorage.instances) {
        instances = Number(sessionStorage.instances) - 1;
        sessionStorage.instances = instances;
        if (0 === instances) {
            // all instances closed
        }
    }
}

侨 拉尔夫

PS:取自http://www.w3schools.com/html/html5_webstorage.asp并略微修改的示例;)

答案 1 :(得分:0)

您可以生成一个cookie,其前缀如closed_tab_,后缀可以说是时间戳或uuid。关闭窗口时,删除此选项卡设置的cookie,并使用相同的命名方案检查其他cookie。 即使没有本地存储的浏览器,这应该可以解决问题 对于崩溃的浏览器 - 您可以每秒使用一个计时器来更新cookie并将其设置为每秒过期。 如果你不是时间敏感,则将其设置为更大的值。