Google chrome extension Chrome扩展消息从弹出窗口传递到内容

Google chrome extension Chrome扩展消息从弹出窗口传递到内容,google-chrome-extension,callback,Google Chrome Extension,Callback,我正试图创建一个chrome扩展来学习前端技术,但在弹出窗口和内容脚本之间的消息传递上遇到了问题 以下是我试图做的: 1.让背景页保存一个全局变量。 2.当用户单击弹出html上的按钮时,将修改全局变量。同时,弹出窗口将全局变量发送到所有选项卡的内容脚本 在background.js中,我有: var settings = { version: 1, enabled: false }; popup.js: $(document).ready(function(){ $(

我正试图创建一个chrome扩展来学习前端技术,但在弹出窗口和内容脚本之间的消息传递上遇到了问题

以下是我试图做的: 1.让背景页保存一个全局变量。 2.当用户单击弹出html上的按钮时,将修改全局变量。同时,弹出窗口将全局变量发送到所有选项卡的内容脚本

在background.js中,我有:

var settings = {
    version: 1,
    enabled: false
};
popup.js:

$(document).ready(function(){
    $("#switcher").click(function( event ) {
        event.preventDefault();

        var bg = chrome.extension.getBackgroundPage();
        var settings = bg.settings;
        settings.enabled = !settings.enabled;

        // send message to the content for all the tabs
        chrome.tabs.query({active: true}, function (tabs) {
            for (var i = 0; i < tabs.length; ++i) {
                console.log("sending message to tab " + i);
                chrome.runtime.sendMessage(tabs[i].id, {enabled: settings.enabled}, function(response) {
                    console.log(response);
                });
            }
        });
    });
});
我试图调试它,但发现“sendMessage”函数从未返回。。“onMessage”从未被触发过。我错过什么了吗

我的清单文件:

{
    "name": "__MSG_appName__",
    "version": "0.0.1",
    "manifest_version": 2,
    "description": "__MSG_appDescription__",
    "icons": {
        "16": "images/icon-16.png",
        "128": "images/icon-128.png"
    },
    "default_locale": "en",
    "permissions": [
        "contextMenus", "storage", "tabs"
    ],
    "background": {
        "scripts": [
            "scripts/background.js"
        ],
        "persistent": true
    },
    "browser_action": {
        "default_icon": {
            "19": "images/icon-19.png",
            "38": "images/icon-38.png"
        },
        "default_popup": "popup.html"
    },
    "content_scripts": [
        {
            "run_at":"document_start",
            "all_frames":true,
            "matches": ["*://*/*"],
            "js": ["bower_components/jquery/dist/jquery.min.js", "scripts/content.js"]
        }
    ],
    "web_accessible_resources": ["bower_components/jquery/dist/jquery.min.map"]
}

您应该使用而不是将消息发送到选项卡中的内容脚本。

供将来参考:您应该右键单击扩展按钮并选择“检查弹出窗口”以尝试调试。
{
    "name": "__MSG_appName__",
    "version": "0.0.1",
    "manifest_version": 2,
    "description": "__MSG_appDescription__",
    "icons": {
        "16": "images/icon-16.png",
        "128": "images/icon-128.png"
    },
    "default_locale": "en",
    "permissions": [
        "contextMenus", "storage", "tabs"
    ],
    "background": {
        "scripts": [
            "scripts/background.js"
        ],
        "persistent": true
    },
    "browser_action": {
        "default_icon": {
            "19": "images/icon-19.png",
            "38": "images/icon-38.png"
        },
        "default_popup": "popup.html"
    },
    "content_scripts": [
        {
            "run_at":"document_start",
            "all_frames":true,
            "matches": ["*://*/*"],
            "js": ["bower_components/jquery/dist/jquery.min.js", "scripts/content.js"]
        }
    ],
    "web_accessible_resources": ["bower_components/jquery/dist/jquery.min.map"]
}