广播消息 (ping) 跨 chrome 个分机
Broadcast message (ping) cross chrome extensions
我正在尝试找出一种方法,让我的扩展程序向浏览器中安装的所有扩展程序发送 ping。
思路如下,我有3个独立的扩展。一个充当中间件,并尝试向浏览器上所有其他令人兴奋的扩展程序发送广播消息。这两个扩展在后台包含一个事件侦听器,它们将在其中回复它们的 ID。因此,中间件后台将能够与这些扩展建立连接。
您不能通过这种方式广播消息,但有一个解决方法。
您可以请求 "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 上的某个位置并不时查询它而不是更新扩展。
我正在尝试找出一种方法,让我的扩展程序向浏览器中安装的所有扩展程序发送 ping。
思路如下,我有3个独立的扩展。一个充当中间件,并尝试向浏览器上所有其他令人兴奋的扩展程序发送广播消息。这两个扩展在后台包含一个事件侦听器,它们将在其中回复它们的 ID。因此,中间件后台将能够与这些扩展建立连接。
您不能通过这种方式广播消息,但有一个解决方法。
您可以请求 "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 上的某个位置并不时查询它而不是更新扩展。