有没有办法用javascript重置/清除浏览器的localStorage?
当前回答
这里有一个函数,允许您删除所有localStorage项,但有例外。这个函数需要jQuery。你可以下载要点。
你可以这样称呼它
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);
}
}
};
其他回答
本地存储附加在全局窗口上。当我们在chrome devtools中记录本地存储时,我们看到它具有以下API:
我们可以使用以下API删除项目:
localStorage.clear():清除整个localStoragelocalStorage.removeItem('myItem'):删除单个项目
手动按钮:
<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.clear()
要从本地存储中删除特定项目,请执行以下操作:
localStorage.removeItem('Item')
首先,您需要检查以确保已启用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);
}
如果要从用户的本地存储中删除特定项或变量,可以使用
localStorage.removeItem("name of localStorage variable you want to remove");
推荐文章
- Node.js和CPU密集型请求
- val()和text()的区别
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- Bower: ENOGIT Git未安装或不在PATH中
- 添加javascript选项选择
- 在Node.js中克隆对象
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 使用JavaScript更改URL参数并指定默认值
- 在window.setTimeout()发生之前取消/终止
- 如何删除未定义和空值从一个对象使用lodash?
- 检测当用户滚动到底部的div与jQuery
- 在JavaScript中检查字符串包含另一个子字符串的最快方法?
- 检测视口方向,如果方向是纵向显示警告消息通知用户的指示