1

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 に「script loaded... and status: undefined」と表示されます。

非同期であっても、スクリプトの 2 回目の実行時にストレージの値を設定する必要があります。

私はこれを間違って使用している可能性があります。その場合、Chrome ストレージを使用して新しいウィンドウにアクセスするように設定する正しい方法は何ですか?

どんな助けでも大歓迎です!

4

1 に答える 1

4

あなたの newPage.html はenabled、 のイベント ハンドラによって設定される前に ' 'の値を要求していると思いますsettings.html。これは、ブラウザのポップアップを実際に開いた後にのみ実行されます。これが未定義の理由です。ポップアップを開くと、それが定義されていることがわかります。

于 2014-12-11T03:16:39.063 に答える