javascript - Chrome 扩展程序 : Cannot get background to sendMessage to content-script

标签 javascript google-chrome google-chrome-extension

这是我的 list :

{
    "name": "my-app",
    "version": "0.0.9",
    "manifest_version": 2,
    "description": "my App",
    "content_scripts": [
        {
            "matches": [
                "https://*/*"
            ],
            "js": [
                "js/vendors/jquery-3.3.1.min.js",
                "js/content.js"
            ]
        }
    ],
    "background": {
        "scripts": [
            "js/background.js"
        ]
    }
}

这是我的脚本:

// background.js
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    setInterval(() => {
        chrome.tabs.sendMessage(tabs[0].id, 'some-message');
    }, 3000);
});

// content.js
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
    console.log('in runtime')
    console.log(msg);
});

chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
    console.log('in extensions')
    console.log(msg);
});

我从来没有记录过任何东西;我在这里缺少什么?

最佳答案

将此添加到您的 list 中

"permissions": ["tabs"]

另一个问题是 tabs[0].id。执行该语句后得到的id与浏览器中标签页的实际id不匹配。要实现此功能,请在发生某些事件时执行此函数。我正在让您的 background.js 在 onUpdated 事件发生时发送消息。

chrome.tabs.onUpdated.addListener(function(id, changeInfo, tab){
    setInterval(()=>{       
        chrome.tabs.sendMessage(id, "hellooo from background");
    },3000);
});

更新您的 Chrome 扩展程序,转到新页面,这应该开始工作。

关于javascript - Chrome 扩展程序 : Cannot get background to sendMessage to content-script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644967/

相关文章:

javascript - 如何在不使用 chrome 网上商店的情况下创建像 facebook 一样的通知警报?

javascript - 对进度条进行逆时针制作

javascript - 在对象中创建对象

javascript - xmlhttprequest 不工作

javascript - html 间距问题-将左边距保持为可变右边距 0

c# - 在 C# 中使用谷歌 "Speak Now"

javascript replace 正在替换嵌套的单词

javascript - Chrome 开发者工具 : Failed to parse CPU profile

javascript - 部署 Google Chrome 扩展; Adobe Flash Player 已停止潜在的不安全操作

javascript - 非常简单的 Chrome 扩展来显示警报