有没有办法在javascript中重置/清除浏览器的localStorage?
我认为 clear(); 将删除所有本地存储数据,但如果您只需要删除一个项目,则可以使用:
clear();
window.localStorage.removeItem("item_name");
localStorage.clear();
要么
window.localStorage.clear();
清除特定项目
要按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; } });
首先,您需要检查以确保启用了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 对象使其无声地失败 . 为了证明这一点,请看下面的例子:
.bind(window)
localStorage.clear
window
localStorage
window.onerror = localStorage.clear;
是相同的:
window.onerror = function(){ localStorage.clear.call(window); }
Localstorage附加在全局 window 上 . 当我们在chrome devtools中记录localstorage时,我们看到它有以下API:
我们可以使用以下API来删除项目:
localStorage.clear() :清除整个localstorage
localStorage.clear()
localStorage.removeItem('myItem') :删除单个项目
localStorage.removeItem('myItem')
如果要从用户的本地存储中删除特定的项目或变量,可以使用
localStorage.removeItem("name of localStorage variable you want to remove");
window.localStorage.clear(); //try this to clear all local storage
//确保安装'store' package https://www.npmjs.com/package/store
import 'store' from 'store';
//然后在你的代码中添加以下两行:
store.clearAll(); localStorage.clear();
这是一个允许您删除所有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); } } };
用它来清除localStorage:
9 回答
我认为
clear();
将删除所有本地存储数据,但如果您只需要删除一个项目,则可以使用:要么
清除特定项目
首先,您需要检查以确保启用了localStorage . 我建议这样做:
是的,您可以(在某些情况下)检查localStorage是否是窗口对象的成员 . 但是,如果您甚至尝试访问索引“localStorage”,则会有iframe沙盒选项(以及其他内容)将引发异常 . 因此,出于最佳实践原因,这是检查localStorage是否已启用的最佳方法 . 然后,您可以像这样清除localStorage .
例如,您可以在webkit浏览器中发生错误后清除localStorage .
在上面的示例中,您需要
.bind(window)
因为没有它,localStorage.clear
函数将在window
对象的上下文中运行,而不是localStorage
对象使其无声地失败 . 为了证明这一点,请看下面的例子:是相同的:
Localstorage附加在全局
window
上 . 当我们在chrome devtools中记录localstorage时,我们看到它有以下API:我们可以使用以下API来删除项目:
localStorage.clear()
:清除整个localstoragelocalStorage.removeItem('myItem')
:删除单个项目如果要从用户的本地存储中删除特定的项目或变量,可以使用
//确保安装'store' package https://www.npmjs.com/package/store
//然后在你的代码中添加以下两行:
这是一个允许您删除所有localStorage项目的函数 . 此功能需要jQuery . 你可以download the gist .
你可以这样称呼它
用它来清除localStorage: