我的案例:localStorage键+值,当浏览器关闭时应该删除,而不是单个选项卡。
请看看我的代码,如果它是正确的和什么可以改进:
//创建localStorage key + value
if (localStorage) {
localStorage。myPageDataArr = {
"name" => "Dan",
"lastname" => "Bonny"
};
}
//当浏览器关闭时- psedocode
$(窗口).unload(函数(){
localStorage。myPageDataArr = undefined;
});
8.5年过去了,最初的问题一直没有得到答案。
当浏览器关闭时,没有一个标签。
这个基本代码片段将为您提供两全其美的服务。仅在浏览器会话期间存在的存储(如sessionStorage),但也可以在选项卡之间共享(localStorage)。
它完全通过localStorage来实现这一点。
function cleanup(){
// place whatever cleanup logic you want here, for example:
// window.localStorage.removeItem('my-item')
}
function tabOpened(){
const tabs = JSON.parse(window.localStorage.getItem('tabs'))
if (tabs === null) {
window.localStorage.setItem('tabs', 1)
} else {
window.localStorage.setItem('tabs', ++tabs)
}
}
function tabClosed(){
const tabs = JSON.parse(window.localStorage.getItem('tabs'))
if (tabs === 1) {
// last tab closed, perform cleanup.
window.localStorage.removeItem('tabs')
cleanup()
} else {
window.localStorage.setItem('tabs', --tabs)
}
}
window.onload = function () {
tabOpened();
}
window.onbeforeunload = function () {
tabClosed();
}