2017-04-12 190 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)); 
} 
相關問題