सर्विस वर्कर के इवेंट

एक्सटेंशन के लिए सेवा वर्कर, स्टैंडर्ड सेवा वर्कर इवेंट और एक्सटेंशन एपीआई में मौजूद कई इवेंट, दोनों के साथ काम करते हैं. इस सेक्शन में, उपलब्ध सुविधाओं के बारे में बताया गया है. साथ ही, इनका इस्तेमाल करने के बारे में सलाह भी दी गई है.

एक्सटेंशन इवेंट का एलान करना

सर्विस वर्कर में मौजूद इवेंट हैंडलर को ग्लोबल स्कोप में शामिल किया जाना चाहिए. इसका मतलब है कि ये स्क्रिप्ट के टॉप लेवल पर होने चाहिए, फ़ंक्शन के अंदर नेस्ट नहीं किए जाने चाहिए. इससे यह पक्का होता है कि शुरुआती स्क्रिप्ट चलाने पर उन्हें सिंक्रोनस रूप से रजिस्टर किया गया है. इससे 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 });
});

सामान्य इवेंट

एक्सटेंशन सेवा वर्कर्स, कुछ खास एपीआई में इवेंट के साथ काम करते हैं. यहां कुछ सामान्य समस्याओं के बारे में बताया गया है. ध्यान दें कि इनमें से कुछ एपीआई का इस्तेमाल करने के लिए अनुमतियां ज़रूरी हैं. साथ ही, हो सकता है कि अन्य एपीआई में ऐसे इवेंट, तरीके या प्रॉपर्टी हों जो Chrome के सभी वर्शन में उपलब्ध न हों. ज़्यादा जानकारी के लिए, लिंक किया गया एपीआई दस्तावेज़ देखें. खास तौर पर, उन इवेंट, तरीकों या प्रॉपर्टी को देखें जिनका आपको इस्तेमाल करना है.

chrome.action
यह इवेंट, आपके एक्सटेंशन के टूलबार आइकॉन के साथ उपयोगकर्ता के इंटरैक्शन के जवाब में ट्रिगर होता है. भले ही, वह कार्रवाई किसी खास पेज (टैब) के लिए हो या पूरे एक्सटेंशन के लिए.
chrome.management
एक्सटेंशन के इंस्टॉल होने, अनइंस्टॉल होने, चालू होने, और बंद होने से जुड़े इवेंट उपलब्ध कराता है.
chrome.notifications
यह एक्सटेंशन से जनरेट की गई सिस्टम सूचनाओं के साथ उपयोगकर्ता के इंटरैक्शन से जुड़े इवेंट उपलब्ध कराता है.
chrome.permissions
इससे पता चलता है कि उपयोगकर्ता ने एक्सटेंशन की अनुमतियां कब दी हैं या कब वापस ली हैं.
chrome.runtime
एक्सटेंशन के लाइफ़साइकल से जुड़े इवेंट, एक्सटेंशन के दूसरे हिस्सों से भेजे गए मैसेज, और उपलब्ध एक्सटेंशन या Chrome के अपडेट की सूचना देता है.
chrome.storage.onChanged
किसी भी StorageArea ऑब्जेक्ट को साफ़ करने या किसी कुंजी की वैल्यू बदलने या सेट होने पर सक्रिय होता है. ध्यान दें कि हर StorageArea इंस्टेंस का अपना onChanged इवेंट होता है.
chrome.webNavigation
यह फ़्लाइट में नेविगेशन के अनुरोधों की स्थिति के बारे में जानकारी देती है.

फ़िल्टर

इवेंट को किसी खास इस्तेमाल के उदाहरण तक सीमित करने या ग़ैर-ज़रूरी इवेंट कॉल को हटाने के लिए, इवेंट फ़िल्टर के साथ काम करने वाले एपीआई का इस्तेमाल करें. उदाहरण के लिए, 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 हैंडलर इंटरसेप्ट नहीं करता.) बाद के मामलों में, आपको उन पेजों के यूआरएल जोड़ने होंगे जिन्हें आपको manifest.json में "host_permissions" कुंजी से फ़ेच करना है.

ServiceWorkerGlobal.message

एक्सटेंशन मैसेज पासिंग के अलावा, सेवा वर्कर मैसेज पासिंग भी उपलब्ध है. हालांकि, ये दोनों सिस्टम साथ काम नहीं करते. इसका मतलब है कि sendMessage() (जो कई एक्सटेंशन एपीआई में उपलब्ध है) का इस्तेमाल करके भेजे गए मैसेज, सर्विस वर्कर मैसेज हैंडलर से नहीं रोके जाते. इसी तरह, postMessage() का इस्तेमाल करके भेजे गए मैसेज, एक्सटेंशन मैसेज हैंडलर को नहीं दिखाए जाते. एक्सटेंशन सेवा वर्कर्स में, दोनों तरह के मैसेज हैंडलर काम करते हैं. इसका मतलब है कि ServiceWorkerGlobal.message और chrome.runtime.onMessage, दोनों काम करते हैं.

अगर आपके पास सर्विस वर्कर मैसेजिंग का इस्तेमाल करने की कोई खास वजह नहीं है, तो आपको एक्सटेंशन मैसेज का इस्तेमाल करना चाहिए.