清除localStorage
有没有办法在javascript中重置用户localStorage?
使用这个来清除localStorage:
localStorage.clear();
如果要从用户的本地存储中删除特定的项目或variables,可以使用
localStorage.removeItem("name of localStorage variable you want to remove");
window.localStorage.clear(); //try this to clear all local storage
我想clear();
删除所有的本地存储数据,但是如果你只需要删除一个项目,你可以使用:
window.localStorage.removeItem("item_name");
这是一个function,可以让你删除所有localStorage项目,例外。 你将需要jQuery的这个function。 你可以下载的要点 。
你可以像这样调用clearStorageExcept(['exceptionOne','exceptionTwo'])
clearStorageExcept = function(exceptions){ var storage = localStorage; var keys = []; var exceptions = [].concat(exceptions); //prevent undefined //get storage keys $.each(localStorage, function(key, val){ keys.push(key); }); //loop through keys for( i=0; i<keys.length; i++ ){ var key = keys[i]; var deleteItem = true; //check if key excluded for( j=0; j<exceptions.length; j++ ){ var exception = exceptions[j]; if( key == exception ){ deleteItem = false; } } //delete key if( deleteItem ){ localStorage.removeItem(key); } } }
首先,您需要检查以确保启用了localStorage。 我会推荐这样做:
var localStorageEnabled = false; try { localStorageEnabled = !!localStorage; } catch(e) {};
是的,你可以(在某些情况下)检查localStorage是否是窗口对象的成员。 但是,iframe沙箱选项(除其他外)将会抛出exception,如果您甚至尝试访问索引“localStorage”。 因此,出于最佳实践原因,这是检查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); }
如果以上所有都不起作用? 那么这个答案就像一个魅力。
https://stackoverflow.com/a/45057698/5902146