externally_connectable

externally_connectable 清单属性用于声明哪些扩展程序、应用和网页可以 通过 runtime.connectruntime.sendMessage 连接到您的扩展程序。

有关消息传递的教程,请参阅跨扩展程序和应用消息传递发送消息 来自网页

在没有外部连接的情况下连接

如果未在扩展程序清单中声明 externally_connectable,则所有扩展程序和应用 可以连接,但无法连接任何网页。因此,当您更新清单以使用 externally_connectable,如果未指定 "ids": ["*"],则其他扩展程序和应用将 将无法再连接到您的扩展程序这可能是意想不到的后果,因此请及时告知 。

manifest.json 示例

{
  "name": "My externally connectable extension",
  "externally_connectable": {
    // Extension and app IDs. If this field is not specified, no
    // extensions or apps can connect.
    "ids": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      ...
      // Alternatively, to match all extensions and apps, specify only
      // "*".
      "*"
    ],
    // Match patterns for web pages. Does not affect content scripts.
    // If this field is not specified, no webpages can connect.
    "matches": [
      "https://*.google.com/*",
      "*://*.chromium.org/*",
      ...
    ],
    // Indicates that the extension would like to make use of the TLS
    // channel ID of the web page connecting to it. The web page must
    // also opt to send the TLS channel ID to the extension via setting
    // includeTlsChannelId to true in runtime.connect's connectInfo
    // or runtime.sendMessage's options.
    "accepts_tls_channel_id": false
  },
  ...
}

参考

external_connectable 清单键可以具有以下属性:

  • ids(字符串数组)- 可选

    获得允许连接的扩展程序或应用的 ID。如果留空或未指定,则不指定 可以连接。

    通配符 "*" 将允许所有扩展程序和应用进行连接。

  • matches(字符串数组)- 可选

    获准连接的网页的网址格式。这不会影响 脚本。如果留空或未指定,任何网页都无法连接。

    格式不得包含通配符网域或(有效)顶级网域的子网域; *://google.com/*http://*.chromium.org/* 是有效的,而 <all_urls>http://*/**://*.com/* 甚至 http://*.appspot.com/* 都不是。

  • accepts_tls_channel_id(布尔值)- 可选

    如果为 true,则通过 runtime.connectruntime.sendMessage 发送的消息将设置 runtime.MessageSender.tlsChannelId(如果这些方法请求使用该类 ID)。如果为 false, 在任何情况下,都绝不会设置 runtime.MessageSender.tlsChannelId