Chrome消息扩展:从注入的脚本到后台

Chrome message extension : From injected script to background

本文关键字:脚本 后台 注入 消息 扩展 Chrome      更新时间:2023-09-26
/* My Background */
console.log("Init BackGround ! ");
chrome.runtime.onMessageExternal.addListener(
    (request, sender, sendResponse) => {
        console.log("J'ai bien reçu un truc");
        console.log(request);
        console.log(sender);
    }
);
    // Inject script
chrome.webNavigation.onCompleted.addListener((details) => {
    chrome.tabs.executeScript(details.tabId, {
        file: "include/ts/injectScript.js",
        runAt: "document_end"
    });
}, {url: [{urlPrefix: "https://website.com"}]});
console.log("End Background init");
/* My injected script */
    var extensionID = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    chrome.runtime.sendMessage(extensionID, {test : 123},(response) => {
        console.log(response);
    });
/* One part of my manifest.json (with good url) */
"externally_connectable": {
    "matches": [
      "*://*.exemple.com/tests/*"
    ]
 },
 "permissions": [..., "*://*.exemple.com/tests/*",...]

后台在页面加载时自动注入 JS 脚本。

在控制台(在当前页面上)中执行的所有测试都有效,并且后台正在接收消息。

不幸的是,尽管后台很好地注入了加载页面的脚本,但它不会收到任何消息。

对不起我的英语,提前感谢您的回答

热雷米-F

您必须

使用 chrome.runtime.onMessage.addListener 而不是 chrome.runtime.onMessageExternal.addListener 来接收来自您自己的内容脚本的消息。

chrome.runtime.onMessageExternal适用于来自其他扩展程序/应用的消息。