javascript - 浏览器关闭时运行一些代码

标签 javascript jquery

我有一个网站,每个页面都需要检查用户是否关闭浏览器,在这种情况下我运行一些代码(releaseLocking)。

所以在这些页面上我实现了这段代码:

    $(window).on('beforeunload', function () {
        return "Are you sure you wanna quit ?";
    });
    $(window).unload(function () {
        releaseLocking();
    });

它有效,但我注意到,如果我导航到实现此代码的多个页面,关闭浏览器时,我将多次调用 releaseLocking(对于每个以前访问过的页面)。

我宁愿只为最后一个真正活跃的页面运行这段代码。你明白我的意思吗?

你知道如何进行吗?

谢谢。

最佳答案

我建议为此使用 localStorage。由于 localStorage 按域存储变量,因此您可以检查代码是否已执行。 localstorage也绑定(bind)了session,所以浏览器完全关闭后,你的session就没有了,导致localStorage被清空,不会影响下一次session。

$(window).on('beforeunload', function () {
        return "Are you sure you wanna quit ?";
});
$(window).unload(function () {
    if ( !localStorage.getItem('lockReleased') ) {
        releaseLocking();
        localStorage.setItem('lockReleased', true)
    }
});

上面的代码将为关闭的第一个窗口将 localStorage 变量 lockReleased 设置为 true。其他窗口将看到该值,并且不会调用 releaseLocking。

关于javascript - 浏览器关闭时运行一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009322/

相关文章:

javascript - 如何映射图像数组并将其用作 React 中的内联样式

javascript - 将数组插入多维数组

javascript - 从 Angular Directive(指令)将多个参数传递给 Controller ​​函数

javascript - Node.js Express : Redirect or render on post

JavaScript 错误 : invalid assignment left-hand side

jquery - 使用 For 循环为多个元素 id 创建函数

jquery - Asp.Net MVC 中的 Ajax 返回问题

jquery - 动态添加class/id onclick

javascript - 如何在 jQuery Mask 插件中将特殊字符转换为文字字符

Jquery UI 自动完成不再允许使用鼠标选择选项