在页与扩展之间传递消息

Message passing between page to extension

本文关键字:消息 之间 扩展      更新时间:2023-09-26

所以我有脚本,不执行网页只在扩展工作,

document.getElementById("test").addEventListener("click", function () {
        var e = document.getElementById("exe");
        var strUser = e.options[e.selectedIndex].value;
        if (strUser == "note") {
            chrome.extension.connectNative('note');
        }
        if (strUser == "calc") {
            chrome.extension.connectNative('calc');
        }
    });
我明白其中的逻辑,但我缺乏做这件事的经验。据我所知,我需要通过消息传递传递我的脚本函数到html页,但我不能这样做。我不知道。eq

chrome.extension不出所料,只对扩展代码可用。顺便说一下,你应该真正使用chrome.runtime.connectNative,但同样适用。

你有两个选项:

  1. 添加一个内容脚本到页面,让它添加一个点击监听器,然后将请求传递到您的后台页面。内容脚本可以和你的后台通信,但是不能自己执行connectNative

  2. 如果这是一个固定的网站,您可以使网站本身发送消息到扩展的背景页面。这使用externally_connectable,在这里解释。

同样,您需要一个后台脚本(在事件脚本上)来处理启动某事的请求,因为这是唯一的东西,(1)有足够的特权来执行它,(2)始终可用来处理请求。