externally_connectable

Właściwość externally_connectable w pliku manifestu określa, które rozszerzenia, aplikacje i strony internetowe mogą łączyć się z rozszerzeniem przez runtime.connect i runtime.sendMessage.

Samouczek dotyczący przekazywania wiadomości znajdziesz w artykułach o wysyłaniu wiadomości między rozszerzeniami i wiadomościami w aplikacjach oraz wysyłaniu wiadomości ze stron internetowych.

Łączenie bez opcji external_connectable

Jeśli w pliku manifestu rozszerzenia nie zadeklarowano externally_connectable, mogą się łączyć wszystkie rozszerzenia i aplikacje, ale żadne strony nie będą mogły się z nim połączyć. W rezultacie gdy aktualizujesz plik manifestu tak, aby używał externally_connectable, a "ids": ["*"] nie jest określony, inne rozszerzenia i aplikacje utracą możliwość połączenia z nim. Pamiętaj, że może to być niezamierzona konsekwencja.

Przykładowy plik 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
  },
  ...
}

Dokumentacja

Klucz pliku manifestu external_connectable może mieć te właściwości:

  • ids (tablica ciągu znaków) – opcjonalnie

    Identyfikatory rozszerzeń lub aplikacji, które mogą się połączyć. Jeśli pozostawisz to pole puste lub nie określisz, żadne rozszerzenia ani aplikacje nie będą się łączyć.

    Symbol wieloznaczny "*" umożliwi połączenie wszystkich rozszerzeń i aplikacji.

  • matches (tablica ciągu znaków) – opcjonalnie

    Wzorce adresów URL stron internetowych, które można łączyć. Nie ma to wpływu na skrypty treści. Jeśli pozostawisz to pole puste lub nie określono inaczej, żadne strony internetowe nie będą mogły się połączyć.

    Wzorce nie mogą zawierać domen z symbolami wieloznacznymi ani subdomen (efektywnych) domen najwyższego poziomu. *://google.com/* i http://*.chromium.org/* są prawidłowe, ale <all_urls>, http://*/*, *://*.com/*, a nawet http://*.appspot.com/* – nie.

  • accepts_tls_channel_id (wartość logiczna) – opcjonalna

    Jeśli ma wartość true, wiadomości wysyłane przez runtime.connect lub runtime.sendMessage ustawiają element runtime.MessageSender.tlsChannelId, jeśli te metody tego zażądają. Jeśli ustawiona jest wartość false, właściwość runtime.MessageSender.tlsChannelId nigdy nie zostanie ustawiona.