广播消息(ping)交叉Chrome扩展

时间:2015-03-11 15:01:34

标签: javascript google-chrome google-chrome-extension google-chrome-app

我正试图找出一种方法,允许我的扩展程序向浏览器中安装的所有扩展程序发送ping。

这个想法如下,我有3个独立的扩展。一个表现为中间件,并尝试向浏览器上的所有其他令人兴奋的扩展发送广播消息。这两个扩展在背景中包含一个事件监听器,他们将回复它们的Id。因此,中间件后台将能够与这些扩展建立连接。

1 个答案:

答案 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上的某个位置并不时地查询它,而不是更新扩展名。