弹出窗口和浏览器操作窗口之间的chrome.storage

时间:2014-12-11 02:39:14

标签: javascript google-chrome google-chrome-extension popupwindow google-chrome-storage

我正在编写Chrome扩展程序,我希望使用chrome存储管理所有数据/变量。根据我的理解,我应该可以在我的扩展程序中使用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显示&#34;脚本已加载...和状态:未定义&#34;。

即使它是异步的,也应该在第二次运行脚本时填充存储值,对吗?

我可能只是错误地使用了这个。如果是这样的话,那么在我的新窗口中使用chrome存储设置某些内容的正确方法是什么?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

我认为您的newPage.html要求&#39; enabled&#39;在settings.html中由事件处理程序设置之前,该事件处理程序仅在您实际打开浏览器弹出窗口后执行。所以这就是它未定义的原因。打开弹出窗口,您应该看到它已定义。