页面与扩展之间的消息传递

Message passing between page to extension

所以我的脚本不能在网页上执行,只能在扩展程序中运行,

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 页面,但我做不到。我没有clue.eq

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

您有 2 个广泛的选择:

  1. 给页面添加一个content script,让它添加一个点击监听器,然后将请求传递给你的后台页面。内容脚本可以与您的后台通信,但无法执行 connectNative 自身。

  2. 如果这是针对固定网站,您可以让网站本身向扩展程序的后台页面发送消息。这使用 externally_connectable 并解释为 here.

同样,您将需要一个 background script (on an event script) 来处理启动某项内容的请求,因为这是唯一同时 (1) 有足够权限执行此操作,(2) 始终可用于处理请求。