我想检查是否启用了另一个扩展。我了解Management API可用于检查是否启用了另一个扩展名(Detect if another Chrome Extension is installed)。但是,我尝试请求最低权限,因此我想问一下我是否可以使用消息传递。
扩展名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.
应在onDisconnect侦听器中添加对chrome.runtime.lastError
的检查。
extPort.onDisconnect.addListener(function(object) {
if (chrome.runtime.lastError) {
extPort.disconnect();
}
});