该页面翻译自 Google Chrome Extensions 与 Google Chrome Apps。除非特别说明,该页面的内容遵循 Creative Commons Attribution 3.0 License,代码示例遵循 BSD License。
清单文件中的 externally_connectable
属性声明哪些扩展程序、应用和网页可以通过
runtime.connect
和
runtime.sendMessage
连接到您的扩展程序。
有关消息传递的教程请参见跨扩展程序和应用的消息传递和从网页中发送消息。
如果您的扩展程序中没有声明
externally_connectable,所有扩展程序和应用都能连接,但是网页不能连接。当您更新您的清单文件使用
externally_connectable 时,如果没有指定
"ids": ["*"],其他所有扩展程序和应用都无法再连接到您的扩展程序,您并不一定期望这样的结果,所以请牢记这一点。
{
"name": "可以从外部连接的扩展程序",
"externally_connectable": {
// 扩展程序与应用的标识符。如果没有指定该字段,
// 任何扩展程序或应用都无法连接。
"ids": [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
...
// 或者如果要匹配所有扩展程序和应用,只需要指定 "*"。
"*"
],
// 网页的匹配表达式,不影响内容脚本。
// 如果没有指定该字段,任何网页都无法连接。
"matches": [
"https://*.google.com",
"*://*.chromium.org",
...
],
// 表示扩展程序需要使用连接到它的网页的
// TLS 通道标识符,网页也必须将 runtime.connect 的
// connectInfo 或 runtime.sendMessage 的 options
// 中的 includeTlsChannelId 设置为 true。
"accepts_tls_channel_id": false
},
...
}
允许连接的网页的 URL 匹配表达式,并不会影响内容脚本。如果为空或未指定,任何网页都不能连接。
表达式不能包含通配符域名,也不能包含(有效)顶级域名的子域名。例如 *://google.com/* 和 http://*.chromium.org/* 是有效的,但 <all_urls>、http://*/*、*://*.com/* 甚至是 http://*.appspot.com/* 就不行。
true,并且调用 runtime.connect 或 runtime.sendMessage 时请求 TLS 通道标识符,发送的消息会设置 runtime.MessageSender.tlsChannelId。如果为 false,在任何情况下都不会设置 runtime.MessageSender.tlsChannelId。