Chrome-消息传递-从弹出窗口单击到特定选项卡上的上下文脚本

时间:2018-09-22 18:41:42

标签: google-chrome tabs message

您能告诉我以下代码为什么不起作用。这是我的代码:

Popup.js(不是backgorund脚本):

chrome.tabs.create({url: url}, function(tab) {
        chrome.tabs.executeScript(tab.id, {file: 'connect.js', allFrames:true}, function() {
            chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
        });
    });

内容脚本:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    console.log(message);
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});

我的清单:

{
    "name": "AN App",
    "version": "1.0",
    "description": "To connect",

    "permissions": [
        "storage", 
        "activeTab", 
        "tabs", 
        "https://*/*"],

    "browser_action": {
        "default_popup": "popup.html"
    },

    "content_scripts": [{
        "matches": ["https://*/*"],
        "js": ["connect.js"]
    }],
    /*
    "background": {
        "scripts": ["background.js"]
    },*/

    "manifest_version": 2
}

我不明白,选项卡中的控制台调试不显示任何内容...

我也尝试从弹出窗口到背景,然后再从背景到选项卡,但是什么都没有发生(我在chrome扩展程序上很陌生,所以希望您能为我提供帮助)

谢谢

致谢

马丁

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。当我从弹出窗口中的JS调用chrome.tabs.create时,它将关闭弹出窗口中运行的代码,并且消息永不发送。

因此,我没有向链接到弹出窗口的JS内部调用chrome.tabs.create,而是向后台脚本发送了一条消息,该后台脚本称为chrome.tabs.create(像这样,它在后台运行并且代码不要停止执行。

然后消息功能像chrome doc所说的那样正常工作。

马丁