是否可以使用消息传递来检测是否启用了其他扩展?



我想检查是否启用了另一个扩展。 我了解管理 API 可用于检查是否启用了其他扩展程序(检测是否安装了另一个 Chrome 扩展程序(。 但是,我尝试请求最低权限,因此我想问一下我是否可以使用消息传递。

扩展 A

let extPort = chrome.runtime.connect(ExtB);
extPort.postMessage({from: "ExtA", fn: "greeting"});
extPort.onMessage.addListener(function(message, sender) {
if ((message.from == "ExtB") && (message.fn == "greeting")) {
console.log("Ext B is enabled");
}
});

分机 B

chrome.runtime.onConnectExternal.addListener(function(port) {
port.onMessage.addListener(function(message, sender) {
if ((message.from == "ExtA") && (message.fn == "greeting")) {
port.postMessage({from: "ExtB", fn: "greeting"});
}
});
});

如果启用了扩展 B,则此方法工作正常,但如果扩展 B 未启用,则会显示错误消息。 有什么方法可以处理此错误消息吗?

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

检查chrome.runtime.lastError应该添加到断开侦听器中。

extPort.onDisconnect.addListener(function(object) {
if (chrome.runtime.lastError) {
extPort.disconnect();
}
}); 

最新更新