【问题标题】: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 将提供多种想法供您探索。

标签: javascript reactjs


【解决方案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,那么它会在选项卡关闭时清除,这也是我不想做的。
  • 但在您的问题中您提到“浏览器选项卡是关闭还是浏览器窗口”,因此我发布了该答案。我将编辑我的答案。请稍候
  • 抱歉有误传。我只是想检测它是否是用户关闭的浏览器选项卡或浏览器窗口。如果是浏览器窗口,则清除本地存储,否则保留它。所以我没有为那个决策点选项卡或窗口找到方法。谢谢
最近更新 更多