无法从插件浏览器访问本地存储在Firefox
问题描述:
我已存储使用下面的代码使用id.js文件在内存中的一个数组:无法从插件浏览器访问本地存储在Firefox
var ids = ["a", "b"];
var obj= {};
var loc = '0';
obj[loc] = ids.toString();
browser.storage.local.set(obj);
browser.storage.local.get(loc,function(result){
console.log(result);
//console output = {v1:'s1'}
})
上附加
我有这样的一个HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="popup.css"/>
</head>
<body>
<button class="download">Download</button>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>
和popup.js为:
Components.utils.import("resource://gre/modules/Console.jsm");
var downloadBtn = document.querySelector('.download');
downloadBtn.addEventListener('click', downloadUser);
function downloadUser() {
browser.storage.local.get("ids",function(result){
var filename = "ids.txt";
var text = result;
alert(text);
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
})
}
从popup.js是用于获取从存储器,然后将数据downloadi它。但没有任何工作。
这里是清单文件:
{
"manifest_version": 2,
"name": "AAA",
"version": "1.0",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["id.js", "popup.js"]
}
],
"permissions": [
"storage"
],
"browser_action": {
"default_icon": {
"48": "icons/border-48.png"
},
"default_title": "Id",
"default_popup": "popup.html"
}
}
答
您可以设置使用本地存储:
var loc = '0';
obj[loc] = ids.toString();
browser.storage.local.set(obj);
这意味着关键ids
是0
。您应该使用0
为重点,以得到它:
browser.storage.local.get({0:""},function(result){
alert(JSON.stringify(result));
}
如果你想使用ids
为重点,你应该设置:
obj["ids"] = ids.toString();
browser.storage.local.set(obj);
而且通过得到它:
browser.storage.local.get({ids:""},function(result){
alert(JSON.stringify(result));
}
在你的'popup.js:1:1'中'Components.utils'是未定义的。您不需要控制台就可以打印。此外,您还有其他错误,请在运行Web扩展时检查浏览器控制台。 –
浏览器控制台为空。你能突出你说的哪个部分是错的吗? –
我还在:'TypeError:downloadBtn为空popup.js:2:1' 另外,请确保您的网络扩展程序可以使用本地存储:验证“webextensions.storage.sync.enabled” 'about:config'设置为true –