我的案例:localStorage键+值,当浏览器关闭时应该删除,而不是单个选项卡。

请看看我的代码,如果它是正确的和什么可以改进:

//创建localStorage key + value if (localStorage) { localStorage。myPageDataArr = { "name" => "Dan", "lastname" => "Bonny" }; } //当浏览器关闭时- psedocode $(窗口).unload(函数(){ localStorage。myPageDataArr = undefined; });


当前回答

    if(localStorage.getItem("visit") === null) {
      localStorage.setItem('visit', window.location.hostname);
      console.log(localStorage.getItem('visit'));
    } 
      else if(localStorage.getItem('visit') == 'localhost'){
            console.log(localStorage.getItem('visit'));
      }
    else {
     console.log(localStorage.getItem('visit'));
    }
   $(document).ready(function(){
      $("#clickme").click(function(){
         localStorage.setItem('visit', '0');
      });
   });  
   window.localStorage.removeItem('visit');

其他回答

有五种方法可供选择:

setItem():将键和值添加到localStorage getItem():通过键从localStorage检索值 removeItem():按键从localStorage中删除一个项 clear():清除所有localStorage key():传递一个数字来检索localStorage的第n个键

您可以使用clear(),该方法在调用时清除该域的所有记录的整个存储。它不接收任何参数。

window.localStorage.clear();

与window global关键字一起使用:-

 window.localStorage.removeItem('keyName');

sessionStorage使用

sessionStorage对象与localStorage对象相同,只是它只存储一个会话的数据。当用户关闭浏览器窗口时,数据将被删除。

下面的例子统计用户在当前会话中点击按钮的次数:

例子

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.";

虽然有些用户已经回答了这个问题,但我将给出一个应用程序设置示例来解决这个问题。

我也有同样的问题。我在我的angularjs应用程序中使用https://github.com/grevory/angular-local-storage模块。如果你这样配置你的应用程序,它会把变量保存在会话存储中,而不是本地存储。因此,如果您关闭浏览器或关闭选项卡,会话存储将自动删除。你什么都不需要做。

app.config(function (localStorageServiceProvider) {
  localStorageServiceProvider
  .setPrefix('myApp')
  .setStorageType('sessionStorage')
});

希望能有所帮助。

您可以尝试以下代码删除本地存储:

delete localStorage.myPageDataArr;