Chrome Ext打开选项卡并将消息发送到新创建的选项卡的内容脚本

时间:2013-07-10 01:26:46

标签: google-chrome google-chrome-extension

我正在尝试从弹出窗口(正在运行)中打开我的chrome扩展中的新选项卡,然后还将消息传递到将注入新打开的选项卡的内容脚本。在弹出窗口中单击按钮后,在我的popup.js中调用此代码。

选项卡按预期打开,但内容脚本未按预期执行。我试图利用create方法的回调函数。回调中的代码已经单独测试,并且单独站立时可以正常工作,我只是无法弄清楚如何将这些组合在一起。我想也许这发生了b / c内容脚本还没有加载,所以我尝试了一些东西,等到标签加载没有运气。以下是我一直在研究的代码。

$("#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});
  });
});

在注释掉“创建”选项卡并手动转到网址后,以下是工作代码:

//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"
  }
}

1 个答案:

答案 0 :(得分:0)

对于“外部”网站,您的"externally_connectable"似乎应该有一个manifest.json密钥:

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

是否可以为您添加此功能?

来源:http://developer.chrome.com/extensions/messaging#external-webpage