externally_connectable

"externally_connectable" 清单属性使用 runtime.connect()runtime.sendMessage() 声明哪些扩展程序和网页可以连接到您的扩展程序。

有关消息传递的教程,请参阅跨扩展程序消息传递从网页发送消息

在没有 external_connectable 的情况下连接

如果扩展程序的清单中声明 externally_connectable 键,则所有扩展程序都可以连接,但任何网页都无法连接。因此,在更新清单以使用 externally_connectable 时,如果未指定 "ids": ["*"],其他扩展程序将无法连接到您的扩展程序。这可能是意外后果,因此请务必注意。

清单

{
  "name": "My externally connectable extension",
  "externally_connectable": {
    "ids": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      ...
    ],
    // If this field is not specified, no web pages can connect.
    "matches": [
      "https://*.google.com/*",
      "*://*.chromium.org/*",
      ...
    ],
    "accepts_tls_channel_id": false
  },
  ...
}

参考

"externally_connectable" 清单键包含以下可选属性:

"ids"
允许连接的扩展程序的 ID。如果留空或未指定,则任何扩展程序或应用都无法连接。通配符 "*" 将允许连接所有扩展程序和应用。
"matches"
允许连接的网页的网址格式。如果留空或未指定,则任何网页都无法连接。格式不能包含通配符网域,也不能包含(有效)顶级域名的子网域,例如
✅ 有效网址 ❌ 网址无效
*://example.com/ *://example.com/one/
http://*.example.org/* <all_urls>
https://example.com/* http://*/*
"accepts_tls_channel_id"
让扩展程序能够使用连接到该扩展程序的网页的 TLS 通道 ID。网页还必须选择向扩展程序发送 TLS 通道 ID,方法是在 Runtime.connect 的 connectInfo 或 Runtime.sendMessage 的选项中将 includeTlsChannelId 设置为 true。如果设置为 false,则在任何情况下都永远不会设置 runtime.MessageSender.tlsChannelId

这不会影响内容脚本。