externally_connectable

A propriedade "externally_connectable" do manifesto declara quais extensões e páginas da Web podem se conectar à sua extensão usando runtime.connect() e runtime.sendMessage().

Para um tutorial sobre transmissão de mensagens, consulte mensagens entre extensões e envio de mensagens de páginas da Web.

Conectar sem externally_connectable

Se a chave externally_connectable não estiver declarada no manifesto da extensão, todas as extensões poderão se conectar, mas nenhuma página da Web poderá. Como consequência, ao atualizar o manifesto para usar externally_connectable, se "ids": ["*"] não for especificado, outras extensões vão perder a capacidade de se conectar à sua extensão. Isso pode ser uma consequência não intencional, então tenha isso em mente.

Manifesto

{
  "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
  },
  ...
}

Referência

A chave de manifesto "externally_connectable" inclui as seguintes propriedades opcionais:

"ids"
Os IDs das extensões que podem se conectar. Se ficar em branco ou não for especificado, nenhuma extensão ou app poderá se conectar. O caractere curinga "*" permite que todas as extensões e apps se conectem.
"matches"
Os padrões de correspondência para páginas da Web que podem se conectar. Se estiver em branco ou não for especificado, nenhuma página da Web poderá se conectar.
"accepts_tls_channel_id"
Permite que a extensão use o ID do canal TLS da página da Web que está se conectando a ela. A página da Web também precisa enviar o ID do canal TLS para a extensão definindo includeTlsChannelId como true no connectInfo do runtime.connect ou nas options do runtime.sendMessage. Se definido como false, runtime.MessageSender.tlsChannelId nunca será definido em nenhuma circunstância.

Isso não afeta scripts de conteúdo.