עקרונות בסיסיים של קובץ שירות (service worker) של תוסף

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

רישום קובצי שירות (service worker)

כדי לרשום שירות של תוסף, מציינים אותו בשדה "background" בקובץ manifest.json. משתמשים במפתח "service_worker", שמציין קובץ JavaScript יחיד. כדי לרשום שירותי עובדים בדפי אינטרנט או באפליקציות אינטרנט, קודם מבצעים זיהוי תכונות של 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 צריך להיות חלק מחבילת התוסף.