我正在进行扩展,虽然我可以删除指定域的所有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
我如何以编程方式使这项工作?
答案 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接受键字符串或键数组以删除特定项目。 此外,我不确定它是否会访问特定域的存储。 在清除之前尝试检查网址