如何在javascript中检测浏览器选项卡是不是关闭或浏览器窗口

Posted

技术标签:

【中文标题】如何在javascript中检测浏览器选项卡是不是关闭或浏览器窗口【英文标题】:How to detect whether browser tab closed or browser window in javascript如何在javascript中检测浏览器选项卡是否关闭或浏览器窗口 【发布时间】:2017-12-17 03:36:06 【问题描述】:

我有一个将用户数据存储在浏览器本地存储中的应用程序。因此,用户甚至可以跨浏览器选项卡和窗口获取这些数据。但我想做的是在用户关闭浏览器窗口时清除 localStorage。

我使用beforeunload 函数来实现这一点,但它也会在标签关闭时触发。

所以,如果有什么方法可以检测浏览器标签是否关闭或浏览器窗口,请帮助我。

PS:我不能使用 sessionStorage,因为它会在浏览器选项卡关闭时销毁。

【问题讨论】:

AFAIK 并非没有游戏;搜索网络,SO 将提供多种想法供您探索。 【参考方案1】:

在浏览器中使用会话存储。 在这里,您不想捕获浏览器选项卡关闭事件。会话存储数据在打开的选项卡的会话中持续存在

if (sessionStorage.clickcount) 
    sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1;
 else 
    sessionStorage.clickcount = 1;

document.getElementById("result").innerhtml = "You have clicked the button " +
sessionStorage.clickcount + " time(s) in this session.";

我从Here获取这些示例代码

仅在浏览器关闭时清除

localStorage.removeItem(key);

希望对你有帮助

【讨论】:

我想在浏览器窗口关闭而不是标签关闭时清除数据。所以,如果我使用 sessionStorage,那么它会在选项卡关闭时清除,这也是我不想做的。 但在您的问题中您提到“浏览器选项卡是关闭还是浏览器窗口”,因此我发布了该答案。我将编辑我的答案。请稍候 抱歉有误传。我只是想检测它是否是用户关闭的浏览器选项卡或浏览器窗口。如果是浏览器窗口,则清除本地存储,否则保留它。所以我没有为那个决策点选项卡或窗口找到方法。谢谢

以上是关于如何在javascript中检测浏览器选项卡是不是关闭或浏览器窗口的主要内容,如果未能解决你的问题,请参考以下文章

在 Mobile Safari 中通过 JavaScript 检测关闭浏览器选项卡?

如何知道浏览器选项卡是不是已经使用 Javascript 打开?

如何使用 Javascript 在 Chrome 中检测选项卡何时聚焦或不聚焦?

检测浏览器选项卡是不是有焦点

javascript如何实现浏览器选项卡的切换?

如何检测用户何时在浏览器当前选项卡视口中放置图像?