کارگران خدمات برنامه افزودنی از رویدادهای استاندارد سرویس کارگر و بسیاری از رویدادها در APIهای برنامه افزودنی پشتیبانی می کنند. این بخش موارد موجود را شرح می دهد و نکاتی را برای استفاده از آنها ارائه می دهد.
رویدادهای برنامه افزودنی را اعلام کنید
کنترلکنندههای رویداد در کارکنان خدمات باید در محدوده جهانی اعلام شوند، به این معنی که باید در سطح بالای اسکریپت باشند و در داخل توابع قرار نگیرند. این تضمین میکند که آنها به صورت همزمان در اجرای اسکریپت اولیه ثبت میشوند، که Chrome را قادر میسازد تا رویدادها را به محض شروع به کار به سرویسدهنده ارسال کند. به عنوان مثال:
chrome.storage.local.get(["badgeText"], ({ badgeText }) => { chrome.action.setBadgeText({ text: badgeText }); chrome.action.onClicked.addListener(handleActionClick); });
chrome.action.onClicked.addListener(handleActionClick); chrome.storage.local.get(["badgeText"], ({ badgeText }) => { chrome.action.setBadgeText({ text: badgeText }); });
رویدادهای رایج
کارگران خدمات افزونه از رویدادها در APIهای خاص پشتیبانی می کنند. در ادامه چند مورد رایج شرح داده شده است. توجه داشته باشید که برخی از این APIها برای استفاده به مجوز نیاز دارند و برخی دیگر ممکن است رویدادها، روشها یا ویژگیهایی داشته باشند که در همه نسخههای Chrome در دسترس نیستند. برای جزئیات، به مستندات API مرتبط، به ویژه رویدادها، روشها یا ویژگیهایی که میخواهید استفاده کنید، مراجعه کنید.
-
chrome.action
- در پاسخ به تعامل کاربر با نماد نوار ابزار برنامه افزودنی شما، خواه این عملکرد برای یک صفحه خاص (برگه) باشد یا برای کل برنامه افزودنی، فعال می شود.
-
chrome.management
- رویدادهای مربوط به نصب، حذف، فعال کردن و غیرفعال کردن برنامههای افزودنی را ارائه میدهد.
-
chrome.notifications
- رویدادهای مربوط به تعامل کاربر با اعلانهای سیستم ایجاد شده توسط برنامه افزودنی را ارائه میکند.
-
chrome.permissions
- زمانی را نشان می دهد که مجوزهای برنامه افزودنی توسط کاربر اعطا یا لغو می شوند.
-
chrome.runtime
- رویدادهای مربوط به چرخه عمر برنامه افزودنی، پیامهای ارسال شده از قسمتهای دیگر برنامه افزودنی و اعلان یک برنامه افزودنی موجود یا بهروزرسانی Chrome را ارائه میکند.
-
chrome.storage.onChanged
- هر زمان که هر شی
StorageArea
پاک شود یا زمانی که مقدار یک کلید تغییر یا تنظیم شود فعال می شود. توجه داشته باشید که هر نمونهStorageArea
رویدادonChanged
خود را دارد. -
chrome.webNavigation
- اطلاعاتی در مورد وضعیت درخواست های ناوبری در پرواز ارائه می دهد.
فیلترها
برای محدود کردن رویدادها به موارد خاص یا حذف تماسهای رویداد غیرضروری، از APIهایی استفاده کنید که از فیلترهای رویداد پشتیبانی میکنند. به عنوان مثال، یک برنامه افزودنی را در نظر بگیرید که برای رویداد tabs.onUpdated
گوش می دهد تا تشخیص دهد که کاربر به یک وب سایت خاص پیمایش می کند. این رویداد در هر ناوبری در هر برگه فراخوانی می شود. در عوض، از webNavigation.onCompleted
با یک فیلتر استفاده کنید. به عنوان مثال:
const filter = {
url: [
{
urlMatches: 'https://www.google.com/',
},
],
};
chrome.webNavigation.onCompleted.addListener(() => {
console.info("The user has loaded my favorite website!");
}, filter);
رویدادهای کارگر خدمات وب
کارگران خدمات توسعه بیشتر از رویدادهای چرخه حیات که در جاهای دیگر توضیح داده شده است پشتیبانی می کنند.
ServiceWorkerGlobal.fetch
هنگامی که هر چیزی از بسته افزونه بازیابی می شود یا زمانی که fetch()
و XMLHttpRequest()
از یک افزونه یا اسکریپت بازشو فراخوانی می شوند، فعال می شود. (تماسهای اسکریپتهای محتوا توسط سرویسگر fetch
رهگیری نمیشوند.) در موارد دوم، باید URL صفحاتی را که میخواهید واکشی کنید به کلید "host_permissions"
در manifest.json
اضافه کنید.
ServiceWorkerGlobal.message
ارسال پیام کارگر سرویس علاوه بر ارسال پیام افزودنی در دسترس است، اما این دو سیستم با هم قابل اجرا نیستند. این بدان معناست که پیامهایی که با استفاده از sendMessage()
ارسال میشوند (که از چندین API برنامههای افزودنی موجود است) توسط گردانندگان پیامهای سرویسکار رهگیری نمیشوند. به همین ترتیب، پیامهایی که با استفاده از postMessage()
ارسال میشوند توسط کنترلکنندههای پیام افزودنی رهگیری نمیشوند. هر دو نوع کنترل کننده پیام - یعنی هم ServiceWorkerGlobal.message
و هم chrome.runtime.onMessage
- در کارکنان خدمات توسعه پشتیبانی می شوند.
شما باید پیامهای افزودنی را ترجیح دهید مگر اینکه دلیل خاصی برای استفاده از پیامرسانی کارگر داشته باشید.