1

我正在寫一個chrome擴展,我想用鉻存儲管理所有的數據/變量。據我所知,我應該可以在我的擴展中使用chrome.storage。彈出窗口和瀏覽器動作窗口之間的chrome.storage

我想在browser_action腳本中設置一些東西,然後在由後臺腳本創建的窗口中訪問它。 HTML和JS文件都有相應的名稱。

這是我曾嘗試沒有運氣:

//manifest.json

{ 
    "manifest_version": 2, 

    "name": "extension", 
    "description": "my extension", 
    "version": "0.1", 

"permissions": [ 
      "tabs", 
      "storage" 
     ], 

    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 

    "browser_action": { 
    "default_icon": { 
     "38": "images/icon38.png" 
    }, 
    "default_popup": "settings.html" 
    } 

} 

//background.js

chrome.windows.create({'url': chrome.extension.getURL("newPage.html"),'type': "detached_panel",'focused': true}, function(){ 
    //created newPage.html which has newPage.js 
}); 

//setting.js

document.addEventListener('DOMContentLoaded', function(){ 
    chrome.storage.local.set({'enabled': 'TRUE'}); 
}); 

//newPage.js

chrome.storage.local.get('enabled', function(result){ 
    document.getElementById("myId").innerHTML += "<br>script loaded... and status: " + result.enabled; 
}); 

當我這樣做時,newPage.html顯示「script loaded ... and status:undefined」。

即使它是異步的,第二次運行腳本時應該填充存儲值,對吧?

我可能會錯誤地使用它。如果是這種情況,在我的新窗口中設置鉻存儲器訪問的正確方法是什麼?

任何幫助,將不勝感激!

+0

你有重新加載整個插件?啓用的目的是什麼? – Todd 2014-12-11 03:01:00

+0

是的。我甚至嘗試在newPage.js中設置'enabled'並立即讀取它的工作。然後我必須清除存儲空間(否則它會保持爲「真」),並顯示爲「未定義」,再次進行上述操作。 – SortingHat 2014-12-11 03:03:23

+0

只是要清楚 - 對不起 - 你確實打開彈出窗口,對吧? – Todd 2014-12-11 03:04:32

回答

3

我認爲您的newPage.html在settings.html中的事件處理程序設置之前要求「enabled」的值,該處理程序僅在實際打開瀏覽器彈出窗口後才執行。所以這就是爲什麼它是未定義的。打開彈出窗口,你會看到它已經被定義。

+0

再次感謝您花時間幫忙! – SortingHat 2014-12-11 03:19:12

+0

np。總是樂意幫助...當我可以。 – Todd 2014-12-11 03:20:49

相關問題