Service Worker ของส่วนขยายจะติดตั้งและอัปเดตแตกต่างจาก 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 ทําได้ 2 วิธี ได้แก่ คำสั่ง import
และเมธอด importScripts()
โปรดทราบว่าระบบไม่รองรับ import()
ซึ่งมักเรียกว่าการนําเข้าแบบไดนามิก
หากต้องการใช้คำสั่ง import
ให้เพิ่มช่อง "type"
ลงในไฟล์ Manifest และระบุ "module"
เช่น
"background": {
"service_worker": "service-worker.js",
"type": "module"
}
จากนั้นใช้ import
ตามปกติ โปรดทราบว่าระบบไม่รองรับการยืนยันการนําเข้า
import { tldLocales } from './locales.js';
ใช้ importScripts()
เช่นเดียวกับในเวิร์กเกอร์ของเว็บเซอร์วิส
importScripts('locales.js');
อัปเดต
หากต้องการอัปเดต Service Worker ให้เผยแพร่ส่วนขยายเวอร์ชันใหม่ใน Chrome เว็บสโตร์ คุณไม่สามารถหลีกเลี่ยงปัญหานี้ด้วยการโหลดส่วนขยายจากเซิร์ฟเวอร์ Manifest V3 ไม่รองรับโค้ดที่โฮสต์จากระยะไกลเนื่องด้วยเหตุผลด้านความปลอดภัย Service Worker ของคุณต้องเป็นส่วนหนึ่งของแพ็กเกจส่วนขยาย