我正试图从弹出窗口在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"
}
}
对于"外部"站点,您的manifest.json
:中似乎应该有一个"externally_connectable"
密钥
"externally_connectable": {
"matches": [
"*://*.example.com/*"
]
}
添加这个对你有用吗?
来源:http://developer.chrome.com/extensions/messaging#external-网页