2017-04-12 133 views
0

我已存储使用下面的代码使用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" 
    } 

} 
+1

在你的'popup.js:1:1'中'Components.utils'是未定义的。您不需要控制台就可以打印。此外,您还有其他错误,请在运行Web扩展时检查浏览器控制台。 –

+0

浏览器控制台为空。你能突出你说的哪个部分是错的吗? –

+0

我还在:'TypeError:downloadBtn为空popup.js:2:1' 另外,请确保您的网络扩展程序可以使用本地存储:验证“webextensions.storage.sync.enabled” 'about:config'设置为true –

回答

0

您可以设置使用本地存储:

var loc = '0'; 
obj[loc] = ids.toString(); 
browser.storage.local.set(obj); 

这意味着关键ids0。您应该使用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)); 
} 
相关问题