页面与扩展之间的消息传递
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 个广泛的选择:
给页面添加一个content script,让它添加一个点击监听器,然后将请求传递给你的后台页面。内容脚本可以与您的后台通信,但无法执行 connectNative
自身。
如果这是针对固定网站,您可以让网站本身向扩展程序的后台页面发送消息。这使用 externally_connectable
并解释为 here.
同样,您将需要一个 background script (on an event script) 来处理启动某项内容的请求,因为这是唯一同时 (1) 有足够权限执行此操作,(2) 始终可用于处理请求。
所以我的脚本不能在网页上执行,只能在扩展程序中运行,
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 个广泛的选择:
给页面添加一个content script,让它添加一个点击监听器,然后将请求传递给你的后台页面。内容脚本可以与您的后台通信,但无法执行
connectNative
自身。如果这是针对固定网站,您可以让网站本身向扩展程序的后台页面发送消息。这使用
externally_connectable
并解释为 here.
同样,您将需要一个 background script (on an event script) 来处理启动某项内容的请求,因为这是唯一同时 (1) 有足够权限执行此操作,(2) 始终可用于处理请求。