ChatGPT解决这个技术问题 Extra ChatGPT

在javascript中清除localStorage?

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


D
Digital Plane

使用它来清除 localStorage:

localStorage.clear();

@BakedInhalf 一点也不。也许您的应用程序重新设置了它?
当我的应用程序启动时,我调用 localStorage.clear(),但即使我关闭浏览器、清除缓存等,数据仍然存在。我知道这一点是因为我在初始化时将模型上的“实例”属性设置为随机数,并且对于给定的 id,实例属性始终相同。
@digital-plane 这会从特定域或所有存储中清除本地存储吗?
clear() 将从您所在的特定域中删除所有 localStorage 键和值。由于 CORS,Javascript 无法从任何其他域获取 localStorage 值。
@BakedInhalf 是对的,它会一直存在,直到您用力刷新页面。当您清除 localStorage 并立即填充它时,它会恢复以前的内容并将新项目添加到其中。当您清除 localStorage 并进行硬刷新时,它是空的,您可以再次开始填充它。
S
Shadow The Kid Wizard

如果要从用户的本地存储中删除特定的 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>')
T
Tanaya agarwal
window.localStorage.clear(); //try this to clear all local storage

S
Stéphane Bruckert

这是一个功能,可让您删除所有 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!
W
Willem van der Veen

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

https://i.stack.imgur.com/fornC.png

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

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


M
Moshiur Rahman

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

localStorage.clear();

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

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

localStorage.removeItem('yourKey');

P
Pramodi Samaratunga

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

localStorage.clear()

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

localStorage.removeItem('Item')

v
vino
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;
                }
            });

J
Jack G

首先,您需要检查以确保启用了 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);
}

J
Joseph Moore

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

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});

m
m-farhan

清除 sessionStorage

sessionStorage.clear();

问题是“localstorage”而不是“sessionstorage”,这两个不一样。
a
amaroko

这是一个简单的代码,它将使用 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>

要确认 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>

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


a
aWebDesigner

手动按钮:

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

可以做一个解释
c
code99

如果有人正在寻找一种在关闭浏览器选项卡时清除 localStorage 的方法,则以下代码有效。 (示例用例:在 localStoarge 中保留一些复制的数据,以粘贴到另一个选项卡上 - 但同时,只要所有先前的选项卡都关闭,缓存就不会出现在新选项卡上)

window.onbeforeunload = () => { // 获取指定 key 的 localStorage 项目 const storage = JSON.parse(localStorage.getItem('MY_KEY')); // 如果存在则清除缓存 if (!isNil(storage)) localStorage.removeItem('MY_KEY'); };

它将一个 eventListener 添加到窗口,以检测选项卡关闭,并且在关闭之前,它清除选项卡的 localStorage(指定键)。它不会清除其他选项卡上的 localStorage(同一个键)。

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

以便,

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