קובצי השירות של התוספים מותקנים ומעודכנים באופן שונה מקובצי השירות של האינטרנט. בדף הזה מוסברים ההבדלים האלה.
רישום קובצי שירות (service worker)
כדי לרשום שירות של תוסף, מציינים אותו בשדה "background"
בקובץ manifest.json
. משתמשים במפתח "service_worker"
, שמציין קובץ JavaScript יחיד. קובצי שירות (service worker) בדפי אינטרנט או באפליקציות אינטרנט רושמים עובדי שירות באמצעות זיהוי התכונות הראשוניות של serviceWorker
ב-navigator
ולאחר מכן שולחים קריאה ל-register()
בתוך זיהוי התכונות. האפשרות הזו לא פועלת לגבי תוספים.
{
"name": "Awesome Test Extension",
...
"background": {
"service_worker": "service-worker.js"
},
...
}
ייבוא סקריפטים
יש שתי שיטות לייבוא סקריפטים ל-service worker: ההצהרה import
והשיטה importScripts()
. חשוב לדעת שאין תמיכה ב-import()
, שנקרא לרוב ייבוא דינמי.
כדי להשתמש בהצהרה import
, צריך להוסיף את השדה "type"
למניפסט ולציין "module"
. לדוגמה:
"background": {
"service_worker": "service-worker.js",
"type": "module"
}
לאחר מכן, משתמשים ב-import
כרגיל. לתשומת ליבכם: אי אפשר להשתמש בהצהרות נכוֹנוּת (assertions) של ייבוא.
import { tldLocales } from './locales.js';
משתמשים ב-importScripts()
כמו שמשתמשים בו בעובד של שירות אינטרנט.
importScripts('locales.js');
עדכון
כדי לעדכן את ה-service worker, מפרסמים גרסה חדשה של התוסף בחנות האינטרנט של Chrome. אי אפשר לעקוף את הבעיה הזו על ידי טעינת התוסף משרת. מטעמי אבטחה, אין תמיכה ב-Manifest V3 בקוד שמתארח מרחוק. ה-service worker צריך להיות חלק מחבילת התוסף.