关于本地存储:在javascript中清除localStorage?

Clearing localStorage in javascript?

是否有任何方法可以重置/清除浏览器在javascript中的本地存储?


使用此项清除本地存储:

1
localStorage.clear();


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

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


1
window.localStorage.clear(); //try this to clear all local storage

这里有一个函数,允许您删除所有本地存储项,但有例外。您将需要jquery来执行此函数。你可以下载注册表。

你可以这样称呼它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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);
    }
  }
};


首先,您需要检查以确保启用了本地存储。我建议这样做:

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

是的,您可以(在某些情况下)检查localstorage是否是window对象的成员。但是,如果您甚至尝试访问索引"localstorage",则有iframe沙盒选项(以及其他选项)会引发异常。因此,出于最佳实践的原因,这是检查是否启用了本地存储的最佳方法。然后,您可以像这样清除本地存储。

1
if (localStorageEnabled) localStorage.clear();

例如,在WebKit浏览器中发生错误后,可以清除本地存储。

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

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

1
window.onerror = localStorage.clear;

相同:

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

1
localStorage.clear();

10

清除特定项目

1
window.localStorage.removeItem("item_name");

To remove particular value by id :

1
2
3
4
5
6
7
8
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;
                }
            });


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

enter image description here

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

  • localStorage.clear():清除整个本地存储
  • localStorage.removeItem('myItem')删除个别项目