简单的问题 - 关于Chrome扩展程序 - 有没有办法直接从内容脚本与扩展程序对话,或者我们是否必须先通过后台脚本?现在,看起来我的内容脚本只能通过后台脚本与扩展程序通信。
这就是我所拥有的:
// content script:
let port = chrome.runtime.connect();
port.postMessage({from: 'content-script'});
// background script:
chrome.runtime.onConnect.addListener(function (port) {
port.onMessage.addListener(function (msg) {
// msg is from content-script
// "forward" the message to the extension
chrome.runtime.sendMessage(msg, function (response) {
console.log('response from extensions:', response);
});
});
});
// extension runtime (what is a good name for it?)
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
if (msg && msg.refresh === true) {
window.location.href = msg.url;
}
});
所以正在发生的事情是,在内容脚本中,如果我想向扩展程序发送消息,我会将消息发送到后台脚本,后台然后将消息转发到扩展本身。就像我说的那样,有没有办法直接从内容脚本与扩展进行通信,而无需通过后台脚本?怎么样?