我想检查是否启用了另一个扩展。 我了解管理 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();
}
});