浏览器上用js怎么区分 关闭标签页还是关闭整个浏览器?

浏览器上用js怎么区分 关闭标签页还是关闭整个浏览器?

现在是想在关闭整个浏览器的时候清空登录信息,关闭标签页的时候不清空?(使用windows,chrome)

阅读 1.5k
avatarAI BotBETA

你可以通过监听 beforeunload 事件来判断用户是关闭标签页还是关闭整个浏览器。当用户尝试关闭浏览器或标签页时,浏览器会触发这个事件。

下面是一个简单的例子:

window.addEventListener('beforeunload', function (e) {
    // 当浏览器窗口或标签页被关闭时,会触发 beforeunload 事件。
    // 我们可以检查 e.isCancelable 来判断是哪种情况。
    if (e.isCancelable) {
        // 如果用户尝试关闭浏览器,清空登录信息。
        clearLoginInfo();
    } else {
        // 如果用户尝试关闭标签页,不清空登录信息。
    }
});

在这个例子中,clearLoginInfo() 是一个假设的函数,用于清空登录信息。你需要替换为实际的函数。

需要注意的是,不同的浏览器可能会有不同的行为。例如,某些浏览器可能会阻止在 beforeunload 事件中执行任何操作,或者可能会忽略用户的取消操作。因此,你的代码可能不会在所有浏览器中都有效。你可能需要进行一些额外的检查和处理,以确保你的代码可以在不同的环境中正常工作。

6 个回答

目前没有这样的方法

你不觉得这需求有问题么。
关闭浏览器最后一个窗口怎么办。
停电了,浏览器关闭,下次开机自动打开窗口怎么办。

新手上路,请多包涵

解决了么楼主

区分不开的,两者都会导致浏览器内你的js文件和文件执行环境销毁,代码都不存在了,就别提再进行判断了。

不就是现在思否用的,会话会丢,放本地存储。但是这有涉及到安全问题。你自己看,关思否网站,切换一个页面会有一个获取用户信息状态接口。
image.png

本地存储F12-应用-本地存储,有 “时间戳|用户登录识别码 + 客户机端ID”来识别用户是否是关闭页签还是关闭整个浏览器。并不是前端单一来判断用户操作。
image.png

但是我觉得看你业务慎用方法,我们做系统只要用户关页签就默认你退出系统全部销毁。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏