externally_connectable

מאפיין המניפסט externally_connectable מצהיר אילו תוספים, אפליקציות ודפי אינטרנט יכולים להתחבר לתוסף דרך runtime.connect ו-runtime.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 (מערך מחרוזת) – אופציונלי

    המזהים של תוספים או אפליקציות שמורשים להתחבר. אם משאירים את השדה ריק או לא מוגדר, אי אפשר לחבר תוספים או אפליקציות.

    התו הכללי לחיפוש "*" יאפשר לכל התוספים והאפליקציות להתחבר.

  • matches (מערך מחרוזת) – אופציונלי

    תבניות ה-URL של דפי אינטרנט שמורשים להתחבר. הפעולה הזו לא משפיעה על סקריפטים של תוכן. אם השדה יישאר ריק או לא צוין, אי אפשר יהיה לחבר דפי אינטרנט.

    התבניות לא יכולות לכלול דומיינים עם תו כללי לחיפוש או תת-דומיינים של דומיינים(פעילים) ברמה העליונה; *://google.com/* ו-http://*.chromium.org/* הם חוקיים, ואילו <all_urls>, http://*/*, *://*.com/* ואפילו http://*.appspot.com/* אינם חוקיים.

  • accepts_tls_channel_id (בוליאני) - אופציונלי

    אם הערך הוא true, הודעות שנשלחות דרך runtime.connect או runtime.sendMessage יגדירו את runtime.MessageSender.tlsChannelId אם השיטות האלה יבקשו זאת. אם הערך false, הערך runtime.MessageSender.tlsChannelId אף פעם לא יוגדר בשום מקרה.