删除特定域的本地存储

时间:2014-07-28 07:11:40

标签: javascript google-chrome google-chrome-extension google-chrome-devtools

我正在进行扩展,虽然我可以删除指定域的所有Cookie,但我无法删除其本地存储空间。

例如,如果我访问了The Telegraph的网站,它会在我的机器中保留一个本地存储:

  

原产地:http://www.telegraph.co.uk/

     

磁盘大小:6.0 KB

我尝试过使用storage api中的remove()方法:

StorageArea.remove("http://www.telegraph.co.uk/");

我收到以下错误:

Error in event handler for browserAction.onClicked: StorageArea is not defined
Stack trace: ReferenceError: StorageArea is not defined

我如何以编程方式使这项工作?

2 个答案:

答案 0 :(得分:6)

chrome.storage相比,localStorage是完全不同的API。前者仅适用于扩展,而后者特定于网站域。

如果您要修改或清除localStorage中特定域的数据,只需在调用localStorage.clear()的页面中插入content script

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {code: 'localStorage.clear()'});
});

如果要清除其他来源的localStorage,则必须在选项卡或框架中加载该来源的页面,并在其中插入内容脚本。例如:

// background.js
var f = document.createElement('iframe');
f.sandbox = ''; // Sandboxed = disable scripts, etc.
f.src = 'http://example.com/#someuniqueid';
f.onloadend = function() {
    f.remove();
};

// content script, declared in manifest file (read the documentation)
if (location.hash === '#someuniqueid') {
    localStorage.clear();
}

答案 1 :(得分:0)

尝试使用

   StorageArea.clear(function callback)

.remove接受键字符串或键数组以删除特定项目。 此外,我不确定它是否会访问特定域的存储。 在清除之前尝试检查网址