首页 > 解决方案 > Chrome - 消息传递 - 从弹出点击到特定选项卡上的上下文脚本

问题描述

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

Popup.js(不是背景脚本):

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 扩展方面很新,所以我希望你能帮助我)

谢谢,

问候

马丁

标签: google-chrometabsmessage

解决方案


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

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

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

马丁


推荐阅读