我正试图找出一种方法,允许我的扩展程序向浏览器中安装的所有扩展程序发送ping。
这个想法如下,我有3个独立的扩展。一个表现为中间件,并尝试向浏览器上的所有其他令人兴奋的扩展发送广播消息。这两个扩展在背景中包含一个事件监听器,他们将回复它们的Id。因此,中间件后台将能够与这些扩展建立连接。
答案 0 :(得分:3)
您无法以这种方式广播消息,但有一种解决方法。
您可以请求"management"
permission并获取已安装的所有扩展程序的列表,并逐个发送消息。
function broadcastExternal(message, callback) {
// Get all installed extensions an apps
chrome.management.getAll(function(extInfos) {
// Cycle through them
extInfos.forEach(function(extInfo) {
// Use `connect` if needed
chrome.runtime.sendMessage(extInfo.id, message, function(response) {
var result = { id: extInfo.id, message: message };
// Check for errors
if(chrome.runtime.lastError) {
result.error = chrome.runtime.lastError;
} else {
result.response = response;
}
// Report either a response or an error
callback(result);
});
});
});
}
如果您不希望提升权限导致权限警告,则您必须维护一个您希望监听并迭代它的所有ID的列表。您可以将该列表存储在Web上的某个位置并不时地查询它,而不是更新扩展名。