在javascript中清除localStorage?

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

701608 次浏览

使用它来清除localStorage:

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

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

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

这是一个允许您删除所有localStorage项目的函数。此函数需要jQuery。您可以下载要点

你可以这样称呼它

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

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

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

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

if (localStorageEnabled) localStorage.clear();

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

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

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

window.onerror = localStorage.clear;

与以下相同:

window.onerror = function(){localStorage.clear.call(window);}
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;}});

本地存储附加在全局window上。当我们在chrome devols中记录本地存储时,我们看到它有以下API:

在此处输入图片描述

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

  1. localStorage.clear():清除整个本地存储
  2. localStorage.removeItem('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>

要确认localStorage是否为空,请使用以下代码:

<script type="text/javascript">
// Check if the localStorage object existsif(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,则您的localStorage被清除。

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

localStorage.clear();

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

如果您只想清除/删除特定的键/值,那么您可以使用删除项(key)

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')

手动按钮:

<script>function ask() {if (confirm('Clear localStorage?') == true) {localStorage.clear()location.reload()}else {alert('Nothing happend')}}}</script><style>button {border-width:0px;background-color:#efefef;padding:5px;width:5cm;margin:5px;}</style><button onclick=ask()>Clear localStorage</button>

如果有人正在寻找一种方法来清除localStorage每当浏览器选项卡关闭时,下面的代码工作。(示例用例:将一些复制的数据保存在localStoarge中,粘贴到另一个选项卡上-但同时,需要缓存不出现在新选项卡上,每当所有以前的选项卡关闭时)

window.onbeforeunload = () => {// get localStorage item with specified keyconst storage = JSON.parse(localStorage.getItem('MY_KEY'));// clear cache if existsif (!isNil(storage)) localStorage.removeItem('MY_KEY');};

它向窗口添加了一个事件监听器,以检测选项卡的关闭,并在关闭之前清除选项卡的localStorage(指定键)。它不会清除其他选项卡上的localStorage(相同键)。

这是一个很好的解决方案,如果我们想只在关闭的选项卡中清除localStorage,并在其他选项卡上保持localStorage(相同键)不变。

所以,

  1. 只要用户保持一个选项卡打开,用户就可以利用localStorage缓存,并且
  2. 关闭所有选项卡后,localStorage将不会出现在new标签。