【问题标题】:Clearing localStorage in javascript?在javascript中清除localStorage?
【发布时间】:2011-12-01 20:23:14
【问题描述】:

有没有办法在javascript中重置/清除浏览器的localStorage?

【问题讨论】:

标签: javascript local-storage


【解决方案1】:

用它来清除localStorage:

localStorage.clear();

【讨论】:

  • @BakedInhalf 根本没有。也许您的应用程序重新设置了它?
  • 我在应用启动时调用localStorage.clear(),但即使我关闭浏览器、清除缓存等,数据仍然存在。我知道这一点是因为我在初始化时将模型上的“实例”属性设置为随机数,并且对于给定的 id,实例属性始终相同。
  • @digital-plane 这会清除特定域中的本地存储还是所有存储?
  • clear() 将从您所在的特定域中删除所有 localStorage 键和值。由于 CORS,Javascript 无法从任何其他域获取 localStorage 值。
  • @BakedInhalf 是对的,它会一直存在,直到您硬刷新页面。当您清除 localStorage 并立即填充它时,它会恢复以前的内容并将新项目添加到其中。当您清除 localStorage 并执行硬刷新时,它是空的,您可以重新开始填充它。
【解决方案2】:
window.localStorage.clear(); //try this to clear all local storage

【讨论】:

    【解决方案3】:

    如果你想从用户的本地存储中移除一个特定的Item或变量,你可以使用

    localStorage.removeItem("name of localStorage variable you want to remove");
    

    【讨论】:

    • 嗨,@Ajeet 如果我不想删除某个特定项目,那么有没有办法也这样做?例如“removeItemNotIn(key)”、“删除除已定义键之外的所有内容”?提前致谢。
    • 嗨,@Shadow 如果我不想删除某个特定项目,那么有没有办法也这样做?例如“removeItemNotIn(key)”、“删除除已定义键之外的所有内容”?提前致谢。
    • 我找到了解决问题的方法:- if(localStorage.getItem(particularKey) == null){ localStorage.clear();但是,如果您有更好的解决方案,请告诉我。谢谢。
    • @learner 所以你想删除除特定键之外的所有键,对吗?为此,您可以这样做var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
    • 也可以:取值,清零再设置值,更通用。 let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
    【解决方案4】:

    这是一个函数,可让您删除所有 localStorage 项目,但有例外。您将需要 jQuery 才能使用此功能。你可以download the gist

    你可以这样称呼它

    let clearStorageExcept = function(exceptions) {
      let keys = [];
      exceptions = [].concat(exceptions); // prevent undefined
    
      // get storage keys
      $.each(localStorage, (key) => {
        keys.push(key);
      });
    
      // loop through keys
      for (let i = 0; i < keys.length; i++) {
        let key = keys[i];
        let deleteItem = true;
    
        // check if key excluded
        for (let j = 0; j < exceptions.length; j++) {
          let exception = exceptions[j];
          if (key == exception) {
            deleteItem = false;
          }
        }
    
        // delete key
        if (deleteItem) {
          localStorage.removeItem(key);
        }
      }
    };
    

    【讨论】:

    • 奇怪的是undefinedsetItemgetItem 的有效密钥
    • @ebob 是的,这可能看起来很奇怪,但不,真的不是。 localStorage 的功能与对象类似,因为键被转换为字符串。例如,使用 undefined 作为这样的键:localStorage.setItem(undefined, 'example Txt!'),实际上会将其存储在名为'undefined' 的键下,正如您在运行以下代码时所看到的那样。 console.log(localStorage.getItem('undefined')) 将输出example Txt!
    【解决方案5】:

    首先,您需要检查以确保 localStorage 已启用。我建议这样做:

    var localStorageEnabled = false;
    try { localStorageEnabled = !!localStorage; } catch(e) {};
    

    是的,您可以(在某些情况下)只检查 localStorage 是否是窗口对象的成员。但是,如果您尝试访问索引“localStorage”,则有 iframe 沙盒选项(除其他外)会引发异常。因此,出于最佳实践的原因,这是检查 localStorage 是否启用的最佳方法。然后,您可以像这样清除 localStorage。

    if (localStorageEnabled) localStorage.clear();
    

    例如,您可以在 webkit 浏览器发生错误后清除 localStorage。

    // clears the local storage upon error
    if (localStorageEnabled)
      window.onerror = localStorage.clear.bind(localStorage);
    

    在上面的示例中,您需要 .bind(window),因为没有它,localStorage.clear 函数将在 window 对象的上下文中运行,而不是 localStorage 对象使其静默失败。为了证明这一点,请看下面的例子:

    window.onerror = localStorage.clear;
    

    等同于:

    window.onerror = function(){
        localStorage.clear.call(window);
    }
    

    【讨论】:

      【解决方案6】:
      localStorage.clear();
      

      window.localStorage.clear();
      

      清除特定项目

      window.localStorage.removeItem("item_name");
      

      通过 id 删除特定值:

      var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
                  $.each(item_detail, function(index, obj){
                      if (key_id == data('key')) {
                          item_detail.splice(index,1);
                          localStorage["key_name"] = JSON.stringify(item_detail);
                          return false;
                      }
                  });
      

      【讨论】:

        【解决方案7】:

        Localstorage 附加在全局 window 上。当我们在 chrome devtools 中记录 localstorage 时,我们看到它具有以下 API:

        我们可以使用以下 API 来删除项目:

        1. localStorage.clear(): 清空整个本地存储
        2. localStorage.removeItem('myItem'): 删除单个项目

        【讨论】:

          【解决方案8】:

          清除 sessionStorage

          sessionStorage.clear();
          

          【讨论】:

          • 问题是“localstorage”而不是“sessionstorage”,这两个不一样。
          【解决方案9】:

          这是一个简单的代码,可以使用 javascript 清除浏览器中存储的本地存储

              <script type="text/javascript">
          
          if(localStorage) { // Check if the localStorage object exists
          
              localStorage.clear()  //clears the localstorage
          
          } else {
          
              alert("Sorry, no local storage."); //an alert if localstorage is non-existing
          }
          
          </script>
          

          要确认本地存储是否为空,请使用以下代码:

          <script type="text/javascript">
          
          // Check if the localStorage object exists
          if(localStorage) {
          
              alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
          } else {
              alert("Sorry, i've been deleted ."); //an alert
          }
          
          </script>
          

          如果它返回 null 则你的本地存储被清除。

          【讨论】:

            【解决方案10】:

            如果您想清除所有存储在 localStorage 中的项目,那么

            localStorage.clear();
            

            使用它清除所有存储的密钥。

            如果您只想清除/删除特定键/值,则可以使用 removeItem(key)

            localStorage.removeItem('yourKey');
            

            【讨论】:

              【解决方案11】:

              这里的代码给出了您不想删除的键的字符串列表,然后它从本地存储中的所有键中过滤这些键,然后删除其他键。

              const allKeys = Object.keys(localStorage);
              
              const toBeDeleted = allKeys.filter(value => {
                return !this.doNotDeleteList.includes(value);
              });
              
              toBeDeleted.forEach(value => {
                localStorage.removeItem(value);
              });
              

              【讨论】:

                【解决方案12】:

                如果需要清除本地存储数据使用:

                localStorage.clear()
                

                要从本地存储中删除特定项目,请使用:

                localStorage.removeItem('Item')
                

                【讨论】:

                  猜你喜欢
                  • 2017-10-01
                  • 1970-01-01
                  • 2019-02-11
                  • 2020-09-05
                  • 2013-07-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-12-04
                  • 1970-01-01
                  相关资源
                  最近更新 更多