javascript - Chrome 消息扩展程序 : From injected script to background

标签 javascript google-chrome-extension typescript message

/* 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/*",...]

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

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

不幸的是,虽然后台很好地注入(inject)了加载页面的脚本,但它没有收到任何消息。

抱歉我的英语不好, 预先感谢您的回答

杰里米-F

最佳答案

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

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

关于javascript - Chrome 消息扩展程序 : From injected script to background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273428/

相关文章:

javascript - 应用程序的 html 加载,但使用 angular 构建的 js 函数无限期地卡住加载

javascript - 从 Chrome 扩展获取数据

typescript - 基于 vuejs v3.0 中的类组件的 vuejs 项目会发生什么?

javascript - 如何简化变量代码?

javascript - 如何在网络应用程序上显示未知数量的图像?

javascript - 文件的属性: lastModified vs lastModifiedDate

javascript - OL3 - 如何知道绘图或交互是否开始

javascript - Chrome 非事件标签不执行 setInterval

javascript - Chrome ://Invalid Scheme

typescript - TsconfigPathsPlugin 类型与 webpack 5 不兼容