清除javascript中的本地存储?

清除javascript中的本地存储?,javascript,local-storage,Javascript,Local Storage,有没有办法在javascript中重置/清除浏览器的本地存储?使用此方法清除本地存储: localStorage.clear(); 如果要从用户的本地存储中删除特定项或变量,可以使用 localStorage.removeItem("name of localStorage variable you want to remove"); 这是一个函数,允许您删除所有本地存储项,但有例外。您将需要此函数。你可以 你可以这样称呼它 let clearStorageExcept = function

有没有办法在javascript中重置/清除浏览器的本地存储?

使用此方法清除本地存储:

localStorage.clear();

如果要从用户的本地存储中删除特定项或变量,可以使用

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

这是一个函数,允许您删除所有本地存储项,但有例外。您将需要此函数。你可以

你可以这样称呼它

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);
    }
  }
};
let clearStorageExcept=函数(异常){
让键=[];
异常=[].concat(异常);//防止未定义
//获取存储密钥
$.each(本地存储,(键)=>{
按键。按(键);
});
//循环键
for(设i=0;i
首先,您需要检查以确保本地存储已启用。我建议这样做:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};
是的,您可以(在某些情况下)检查本地存储是否是窗口对象的成员。但是,如果您甚至试图访问索引“localStorage”,则有iframe沙盒选项(以及其他选项)将引发异常。因此,出于最佳实践的原因,这是检查本地存储是否已启用的最佳方法。然后,您可以像这样清除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);
}

清除特定项目

window.localStorage.removeItem("item_name");
要按id删除特定值,请执行以下操作:


本地存储连接到全局
窗口
。当我们在chrome devtools中记录localstorage时,我们看到它具有以下API:

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

  • localStorage.clear()
    :清除整个localStorage
  • localStorage.removietem('myItem')
    :删除单个项目

  • 清除会话存储

    sessionStorage.clear();
    

    下面是一个简单的代码,它将使用javascript清除浏览器中存储的localstorage

        <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>
    
    
    if(localStorage){//检查localStorage对象是否存在
    localStorage.clear()//清除本地存储
    }否则{
    警报(“对不起,没有本地存储。”);//如果本地存储不存在,则发出警报
    }
    
    要确认localstorage是否为空,请使用以下代码:

    <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>
    
    
    //检查localStorage对象是否存在
    if(本地存储){
    警报(“我还在这里,”+localStorage.getItem(“您的对象名”);//输入对象名
    }否则{
    警报(“对不起,我已被删除。”);//警报
    }
    

    如果返回null,则清除本地存储。

    如果要清除存储在本地存储中的所有项目,则

    localStorage.clear();
    
    使用此选项清除所有存储的密钥

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

    localStorage.removeItem('yourKey');
    

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

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

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

    localStorage.clear()
    
    要从本地存储中删除特定项,请使用:

    localStorage.removeItem('Item')
    

    @一点也不。也许你的应用程序重新设置了它?当我的应用程序启动时,我调用localStorage.clear(),但即使我关闭浏览器、清除缓存等,数据仍然存在。我知道这一点,因为我在初始化时已将模型上的“instance”属性设置为随机数,并且对于给定id,instance属性始终相同。@digital plane这会从特定域或所有存储中清除本地存储吗?
    clear()
    将从您所在的特定域中删除所有本地存储密钥和值。由于CORS,Javascript无法从任何其他域获取localStorage值。@BakedInhalf是正确的,它将一直保留,直到您硬刷新页面为止。当您清除本地存储并立即填充时,它会恢复以前的内容并向其中添加新项目。当您清除本地存储并进行硬刷新时,它是空的,您可以重新开始填充。奇怪的是,
    undefined
    setItem
    getItem
    @ebob的有效键是的,它可能看起来很奇怪,但实际上不是。localStorage的功能与对象类似,键被转换为字符串。例如,将undefined用作如下键:
    localStorage.setItem(undefined,'example Txt!')
    ,将实际将其存储在名为
    'undefined'
    的键下,运行以下代码时可以看到这一点
    console.log(localStorage.getItem('undefined'))
    将输出
    example Txt
    .Hi,@Ajeet如果我不想删除某个特定项目,那么有没有办法也删除?例如“removeItemNotIn(键)”,“除去已定义键以外的所有键”?提前谢谢。嗨,@Shadow如果我不想移除某个特定的物品,那么有没有办法呢?例如“removeItemNotIn(键)”,“除去已定义键以外的所有键”?提前谢谢。我找到了解决我问题的方法:-if(localStorage.getItem(specificularkey)==null){localStorage.clear();}但是如果你有更好的方法,请告诉我。谢谢。@learner所以你想移除除某一把钥匙以外的所有钥匙,对吗?为此,您可以执行如下
    var键;对于(var i=0;ilocalStorage.removeItem('yourKey');
    
    const allKeys = Object.keys(localStorage);
    
    const toBeDeleted = allKeys.filter(value => {
      return !this.doNotDeleteList.includes(value);
    });
    
    toBeDeleted.forEach(value => {
      localStorage.removeItem(value);
    });
    
    localStorage.clear()
    
    localStorage.removeItem('Item')