2

ポップアップからChrome拡張機能で新しいタブを開こうとしています(これは機能しています)。次に、新しく開いたタブに挿入されるコンテンツスクリプトにメッセージを渡します。このコードは、ポップアップ内でボタンがクリックされた後、popup.js で呼び出されています。

タブは期待どおりに開いていますが、コンテンツ スクリプトが期待どおりに実行されていません。create メソッドのコールバック関数を利用しようとしています。コールバック内のコードは個別にテストされており、スタンドアロンの場合は期待どおりに動作しますが、これらを適切にまとめる方法がわかりません。コンテンツスクリプトがまだ読み込まれていないためにこれが起こっているのではないかと思ったので、タブが読み込まれるまで何かを待ってみましたが、うまくいきませんでした。以下は私が取り組んできたコードです。

$("#submit_button").click(function() {
  chrome.tabs.create({url: "http://myurl.com", index: 0}, function(tab) {
    chrome.tabs.sendMessage(tab.id, {"value": "amazon_paste", "object": chrome.extension.getBackgroundPage().jsonOrderObj});
  });
});

作成タブをコメントアウトし、手動でURLに移動した後の作業コードは次のとおりです。

//chrome.tabs.create({url: "http://myurl.com", index: 0}, function(tab) {

        chrome.tabs.getSelected(null, function(tab) {
            chrome.tabs.sendMessage(tab.id, {"value": "amazon_paste", "object": chrome.extension.getBackgroundPage().jsonOrderObj});
        });
//});

また、ここに私のJSONマニフェストがあります:

{
  "name": "Amazon Order Extension",
  "version": "2.0",
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": ["https://sellercentral.amazon.com/gp/orders-v2/confirm-shipment/*"],
      "js": ["jquery.js", "amazon_content_script.js"]
    },
    {
        "matches": ["http://myurl.com"],
        "js": ["jquery.js", "inventory_content_script.js"]
    }
  ],
  "permissions": ["background", "tabs"],
  "background": {
     "page": "background.html"
  },
  "description": "",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}
4

1 に答える 1

0

"externally_connectable"「外部」サイトの場合、にキーが必要なようですmanifest.json:

"externally_connectable": {
  "matches": [
    "*://*.example.com/*"
  ]
}

これを追加するとうまくいきますか?

ソース: http://developer.chrome.com/extensions/messaging#external-webpage

于 2014-03-24T21:01:20.617 に答える