refresh date: 2026-09-25 robots: noindex
ब्यौरा
chrome.events नेमस्पेस में, सामान्य टाइप होते हैं. इनका इस्तेमाल एपीआई करते हैं. ये एपीआई, इवेंट डिसपैच करते हैं, ताकि आपको किसी दिलचस्प गतिविधि के बारे में सूचना दी जा सके.
Event एक ऐसा ऑब्जेक्ट है जिसकी मदद से, किसी दिलचस्प घटना के होने पर आपको सूचना मिलती है. अलार्म बंद होने पर सूचना पाने के लिए, chrome.alarms.onAlarm इवेंट का इस्तेमाल करने का उदाहरण यहां दिया गया है:
chrome.alarms.onAlarm.addListener(function(alarm) {
appendToLog('alarms.onAlarm --'
+ ' name: ' + alarm.name
+ ' scheduledTime: ' + alarm.scheduledTime);
});
उदाहरण में दिखाया गया है कि addListener() का इस्तेमाल करके, सूचना पाने के लिए रजिस्टर किया जाता है. addListener() के लिए आर्ग्युमेंट हमेशा एक ऐसा फ़ंक्शन होता है जिसे आपने इवेंट को हैंडल करने के लिए तय किया है. हालांकि, फ़ंक्शन के पैरामीटर इस बात पर निर्भर करते हैं कि आपको कौनसे इवेंट को हैंडल करना है. alarms.onAlarm के दस्तावेज़ में जाकर देखें. आपको पता चलेगा कि इस फ़ंक्शन में सिर्फ़ एक पैरामीटर होता है: एक alarms.Alarm ऑब्जेक्ट, जिसमें अलार्म के बंद होने की जानकारी होती है.
इवेंट का इस्तेमाल करने वाले एपीआई के उदाहरण: अलार्म, i18n, पहचान, रनटाइम. ज़्यादातर Chrome API ऐसा करते हैं.
डिक्लेरेटिव इवेंट हैंडलर
डिक्लेरेटिव इवेंट हैंडलर, डिक्लेरेटिव शर्तों और कार्रवाइयों वाले नियमों को तय करने का तरीका उपलब्ध कराते हैं. शर्तों का आकलन JavaScript इंजन के बजाय ब्राउज़र में किया जाता है. इससे राउंडट्रिप में लगने वाला समय कम हो जाता है और ज़्यादा असरदार तरीके से काम किया जा सकता है.
डिक्लेरेटिव इवेंट हैंडलर का इस्तेमाल, Declarative Web Request API और Declarative Content API में किया जाता है. इस पेज पर, सभी डिक्लेरेटिव इवेंट हैंडलर के बुनियादी सिद्धांतों के बारे में बताया गया है.
नियम
सबसे आसान नियम में एक या उससे ज़्यादा शर्तें और एक या उससे ज़्यादा कार्रवाइयां होती हैं:
var rule = {
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
अगर कोई भी शर्त पूरी होती है, तो सभी कार्रवाइयां पूरी की जाती हैं.
शर्तों और कार्रवाइयों के अलावा, हर नियम को एक आइडेंटिफ़ायर दिया जा सकता है. इससे पहले से रजिस्टर किए गए नियमों को आसानी से अनरजिस्टर किया जा सकता है. साथ ही, नियमों के बीच प्राथमिकता तय की जा सकती है. प्राथमिकताओं पर तब ही विचार किया जाता है, जब नियमों का एक-दूसरे से टकराव होता है या उन्हें किसी खास क्रम में लागू करने की ज़रूरत होती है. कार्रवाइयों को, नियमों की प्राथमिकता के घटते क्रम में लागू किया जाता है.
var rule = {
id: "my rule", // optional, will be generated if not set.
priority: 100, // optional, defaults to 100.
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
इवेंट ऑब्जेक्ट
इवेंट ऑब्जेक्ट के लिए नियम लागू किए जा सकते हैं. ये इवेंट ऑब्जेक्ट, इवेंट होने पर कॉलबैक फ़ंक्शन को कॉल नहीं करते. हालांकि, ये यह जांच करते हैं कि क्या किसी रजिस्टर किए गए नियम की कम से कम एक शर्त पूरी हुई है. साथ ही, इस नियम से जुड़ी कार्रवाइयों को लागू करते हैं. डिक्लेरेटिव एपीआई के साथ काम करने वाले इवेंट ऑब्जेक्ट में तीन
काम के तरीके होते हैं: events.Event.addRules, events.Event.removeRules, और
events.Event.getRules.
नियम जोड़ना
नियम जोड़ने के लिए, इवेंट ऑब्जेक्ट के addRules() फ़ंक्शन को कॉल करें. यह नियम के इंस्टेंस के ऐरे को पहले पैरामीटर के तौर पर लेता है. साथ ही, यह एक कॉलबैक फ़ंक्शन लेता है, जिसे पूरा होने पर कॉल किया जाता है.
var rule_list = [rule1, rule2, ...];
function addRules(rule_list, function callback(details) {...});
अगर नियमों को सही तरीके से डाला गया है, तो details पैरामीटर में डाले गए नियमों का एक कलेक्शन होता है. ये नियम, पास किए गए rule_list में मौजूद क्रम में ही दिखते हैं. साथ ही, वैकल्पिक पैरामीटर id और priority में जनरेट की गई वैल्यू भरी गई हैं. अगर कोई नियम अमान्य है, जैसे कि उसमें कोई अमान्य शर्त या कार्रवाई शामिल है, तो कोई भी नियम नहीं जोड़ा जाता है. साथ ही, कॉलबैक फ़ंक्शन को कॉल किए जाने पर, runtime.lastError वैरिएबल सेट हो जाता है. rule_list में मौजूद हर नियम में एक यूनीक आइडेंटिफ़ायर होना चाहिए. यह आइडेंटिफ़ायर, फ़िलहाल किसी दूसरे नियम या खाली आइडेंटिफ़ायर के लिए इस्तेमाल नहीं किया जा रहा हो.
नियमों को हटाना
नियमों को हटाने के लिए, removeRules() फ़ंक्शन को कॉल करें. यह फ़ंक्शन, पहले पैरामीटर के तौर पर नियम के आइडेंटिफ़ायर का एक वैकल्पिक कलेक्शन और दूसरे पैरामीटर के तौर पर कॉलबैक फ़ंक्शन स्वीकार करता है.
var rule_ids = ["id1", "id2", ...];
function removeRules(rule_ids, function callback() {...});
अगर rule_ids आइडेंटिफ़ायर का एक कलेक्शन है, तो कलेक्शन में शामिल आइडेंटिफ़ायर वाले सभी नियमों को हटा दिया जाता है. अगर rule_ids में कोई ऐसा आइडेंटिफ़ायर शामिल है जिसके बारे में जानकारी नहीं है, तो उसे अनदेखा कर दिया जाता है. अगर rule_ids को undefined पर सेट किया जाता है, तो इस एक्सटेंशन के सभी रजिस्टर किए गए नियम हटा दिए जाते हैं. नियम हटाए जाने पर, callback()
फ़ंक्शन को कॉल किया जाता है.
नियमों को वापस पाना
मौजूदा समय में रजिस्टर किए गए नियमों की सूची पाने के लिए, getRules() फ़ंक्शन को कॉल करें. यह removeRules की तरह ही, नियम के आइडेंटिफ़ायर का एक वैकल्पिक कलेक्शन और कॉलबैक फ़ंक्शन स्वीकार करता है.
var rule_ids = ["id1", "id2", ...];
function getRules(rule_ids, function callback(details) {...});
callback() फ़ंक्शन को पास किया गया details पैरामीटर, नियमों के एक ऐसे कलेक्शन को दिखाता है जिसमें भरे गए वैकल्पिक पैरामीटर शामिल होते हैं.
परफ़ॉर्मेंस
बेहतरीन परफ़ॉर्मेंस पाने के लिए, आपको इन दिशा-निर्देशों का ध्यान रखना चाहिए.
एक साथ कई नियमों को रजिस्टर और अनरजिस्टर करें. हर रजिस्ट्रेशन या अनरजिस्ट्रेशन के बाद, Chrome को इंटरनल डेटा स्ट्रक्चर अपडेट करने होते हैं. इस अपडेट में ज़्यादा समय लगता है.
इसके बजाय:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1]);
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
prefer:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
events.UrlFilter में रेगुलर एक्सप्रेशन के बजाय सबस्ट्रिंग मैचिंग को प्राथमिकता दें. सबस्ट्रिंग के आधार पर मैचिंग बहुत तेज़ी से होती है.
इसके बजाय:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {urlMatches: "example.com/[^?]*foo" } });
prefer:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {hostSuffix: "example.com", pathContains: "foo"} });
अगर कई नियमों में एक जैसी कार्रवाइयां शामिल हैं, तो उन नियमों को एक में मर्ज कर दें. नियम, किसी एक शर्त के पूरा होते ही अपनी कार्रवाइयां ट्रिगर करते हैं. इससे डुप्लीकेट ऐक्शन सेट को मैच करने की प्रोसेस तेज़ हो जाती है और मेमोरी की खपत कम हो जाती है.
इसके बजाय:
var condition1 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com' } });
var condition2 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'foobar.com' } });
var rule1 = { conditions: [condition1],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
var rule2 = { conditions: [condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
prefer:
var rule = { conditions: [condition1, condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule]);
फ़िल्टर किए गए इवेंट
फ़िल्टर किए गए इवेंट, एक ऐसा तरीका है जिसकी मदद से लिसनर, इवेंट का ऐसा सबसेट तय कर सकते हैं जिसमें उनकी दिलचस्पी है. फ़िल्टर का इस्तेमाल करने वाले लिसनर को उन इवेंट के लिए ट्रिगर नहीं किया जाएगा जो फ़िल्टर की शर्तों को पूरा नहीं करते. इससे लिसनिंग कोड ज़्यादा जानकारी देने वाला और असरदार बन जाता है. सर्विस वर्कर को उन इवेंट को हैंडल करने के लिए चालू करने की ज़रूरत नहीं होती जिनके बारे में उसे कोई जानकारी नहीं होती.
फ़िल्टर किए गए इवेंट का मकसद, मैन्युअल फ़िल्टरिंग कोड से इस तरह के कोड पर ट्रांज़िशन करने की अनुमति देना है:
chrome.webNavigation.onCommitted.addListener(function(e) {
if (hasHostSuffix(e.url, 'google.com') ||
hasHostSuffix(e.url, 'google.com.au')) {
// ...
}
});
में बदल दिया गया है:
chrome.webNavigation.onCommitted.addListener(function(e) {
// ...
}, {url: [{hostSuffix: 'google.com'},
{hostSuffix: 'google.com.au'}]});
इवेंट में ऐसे फ़िल्टर इस्तेमाल किए जा सकते हैं जो उस इवेंट के लिए काम के हों. किसी इवेंट के साथ काम करने वाले फ़िल्टर की सूची, उस इवेंट के दस्तावेज़ में "फ़िल्टर" सेक्शन में दी जाएगी.
मिलते-जुलते यूआरएल (ऊपर दिए गए उदाहरण की तरह) के लिए, इवेंट फ़िल्टर में यूआरएल मैच करने की वही सुविधाएं होती हैं जो events.UrlFilter के साथ इस्तेमाल की जा सकती हैं. हालांकि, इसमें स्कीम और पोर्ट मैच करने की सुविधा शामिल नहीं होती.
टाइप
Event
यह एक ऐसा ऑब्जेक्ट है जिसकी मदद से, Chrome इवेंट के लिए लिसनर जोड़े और हटाए जा सकते हैं.
प्रॉपर्टी
-
addListener
void
यह फ़ंक्शन, किसी इवेंट के लिए इवेंट लिसनर कॉलबैक को रजिस्टर करता है.
addListenerफ़ंक्शन इस तरह दिखता है:(callback: H) => {...}
-
कॉलबैक
H
जब कोई इवेंट होता है, तब इस फ़ंक्शन को कॉल किया जाता है. इस फ़ंक्शन के पैरामीटर, इवेंट के टाइप पर निर्भर करते हैं.
-
-
addRules
void
यह कुकी, इवेंट को मैनेज करने के लिए नियम रजिस्टर करती है.
addRulesफ़ंक्शन इस तरह दिखता है:(rules: Rule<anyany>[], callback?: function) => {...}
-
getRules
void
यह फ़िलहाल रजिस्टर किए गए नियमों को दिखाता है.
getRulesफ़ंक्शन इस तरह दिखता है:(ruleIdentifiers?: string[], callback: function) => {...}
-
ruleIdentifiers
string[] ज़रूरी नहीं है
अगर कोई कलेक्शन पास किया जाता है, तो सिर्फ़ वे नियम दिखाए जाते हैं जिनमें इस कलेक्शन में मौजूद आइडेंटिफ़ायर शामिल होते हैं.
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर ऐसा दिखता है:(rules: Rule<anyany>[]) => void
-
नियम
Rule<anyany>[]
रजिस्टर किए गए नियम, वैकल्पिक पैरामीटर में वैल्यू भरी जाती हैं.
-
-
-
hasListener
void
hasListenerफ़ंक्शन इस तरह दिखता है:(callback: H) => {...}
-
कॉलबैक
H
उस श्रोता का रजिस्ट्रेशन स्टेटस जिसकी जांच की जानी है.
-
returns
बूलियन
अगर इवेंट के लिए कॉल बैक रजिस्टर किया गया है, तो वैल्यू true होगी.
-
-
hasListeners
void
hasListenersफ़ंक्शन इस तरह दिखता है:() => {...}-
returns
बूलियन
अगर इवेंट के लिए कोई इवेंट लिसनर रजिस्टर किया गया है, तो वैल्यू सही होती है.
-
-
removeListener
void
यह फ़ंक्शन, किसी इवेंट से इवेंट लिसनर कॉलबैक को हटाता है.
removeListenerफ़ंक्शन इस तरह दिखता है:(callback: H) => {...}
-
कॉलबैक
H
वह लिसनर जिसका रजिस्ट्रेशन रद्द किया जाएगा.
-
-
removeRules
void
इससे, फ़िलहाल रजिस्टर किए गए नियमों को अनरजिस्टर किया जाता है.
removeRulesफ़ंक्शन इस तरह दिखता है:(ruleIdentifiers?: string[], callback?: function) => {...}
-
ruleIdentifiers
string[] ज़रूरी नहीं है
अगर कोई कलेक्शन पास किया जाता है, तो सिर्फ़ उन नियमों को अनरजिस्टर किया जाता है जिनके आइडेंटिफ़ायर इस कलेक्शन में शामिल हैं.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं है
callbackपैरामीटर ऐसा दिखता है:() => void
-
Rule
इवेंट मैनेज करने के लिए, डिक्लेरेटिव नियम के बारे में जानकारी.
प्रॉपर्टी
-
कार्रवाइयां
any[]
शर्तों में से कोई एक पूरी होने पर ट्रिगर होने वाली कार्रवाइयों की सूची.
-
शर्तें
any[]
उन शर्तों की सूची जिनसे कार्रवाइयां ट्रिगर हो सकती हैं.
-
id
string ज़रूरी नहीं है
यह एक वैकल्पिक आइडेंटिफ़ायर है. इसकी मदद से इस नियम को रेफ़र किया जा सकता है.
-
प्राथमिकता
number optional
इस नियम की प्राथमिकता. यह विकल्प इस्तेमाल करना ज़रूरी नहीं है. डिफ़ॉल्ट वैल्यू 100 होती है.
-
टैग
string[] ज़रूरी नहीं है
टैग का इस्तेमाल, नियमों को एनोटेट करने और नियमों के सेट पर कार्रवाइयां करने के लिए किया जा सकता है.
UrlFilter
यह फ़ंक्शन, अलग-अलग शर्तों के हिसाब से यूआरएल फ़िल्टर करता है. इवेंट फ़िल्टर करना लेख पढ़ें. सभी मानदंड केस-सेंसिटिव होते हैं.
प्रॉपर्टी
-
cidrBlocks
string[] ज़रूरी नहीं है
Chrome 123 या इसके बाद के वर्शनअगर यूआरएल का होस्ट हिस्सा कोई आईपी पता है और वह कलेक्शन में दिए गए किसी भी सीआईडीआर ब्लॉक में शामिल है, तो यह शर्त पूरी होती है.
-
hostContains
string ज़रूरी नहीं है
अगर यूआरएल के होस्टनेम में दी गई स्ट्रिंग मौजूद है, तो यह शर्त पूरी होती है. यह जांचने के लिए कि क्या होस्ट नेम कॉम्पोनेंट में 'foo' प्रीफ़िक्स है, hostContains: '.foo' का इस्तेमाल करें. यह 'www.foobar.com' और 'foo.com' से मेल खाता है, क्योंकि होस्ट नेम की शुरुआत में एक इंप्लिसिट डॉट जोड़ा जाता है. इसी तरह, hostContains का इस्तेमाल कॉम्पोनेंट के सफ़िक्स ('foo.') से मैच करने के लिए किया जा सकता है. साथ ही, कॉम्पोनेंट ('.foo.') से पूरी तरह मैच करने के लिए भी इसका इस्तेमाल किया जा सकता है. आखिरी कॉम्पोनेंट के लिए, सफ़िक्स और सटीक मैचिंग अलग-अलग तरीके से की जानी चाहिए. इसके लिए, hostSuffix का इस्तेमाल करें. ऐसा इसलिए, क्योंकि होस्ट नेम के आखिर में कोई इंप्लिसिट डॉट नहीं जोड़ा जाता है.
-
hostEquals
string ज़रूरी नहीं है
अगर यूआरएल का होस्ट नेम, तय की गई स्ट्रिंग के बराबर है, तो यह शर्त पूरी होती है.
-
hostPrefix
string ज़रूरी नहीं है
अगर यूआरएल का होस्ट नेम, तय की गई स्ट्रिंग से शुरू होता है, तो यह मैच करता है.
-
hostSuffix
string ज़रूरी नहीं है
अगर यूआरएल का होस्ट नेम, तय की गई स्ट्रिंग पर खत्म होता है, तो यह शर्त पूरी होती है.
-
originAndPathMatches
string ज़रूरी नहीं है
अगर क्वेरी सेगमेंट और फ़्रैगमेंट आइडेंटिफ़ायर के बिना यूआरएल, तय किए गए रेगुलर एक्सप्रेशन से मेल खाता है, तो यह फ़ंक्शन काम करता है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है. रेगुलर एक्सप्रेशन, RE2 सिंटैक्स का इस्तेमाल करते हैं.
-
pathContains
string ज़रूरी नहीं है
अगर यूआरएल के पाथ सेगमेंट में तय की गई स्ट्रिंग मौजूद है, तो यह शर्त पूरी होती है.
-
pathEquals
string ज़रूरी नहीं है
अगर यूआरएल का पाथ सेगमेंट, तय की गई स्ट्रिंग के बराबर है, तो यह मैच करता है.
-
pathPrefix
string ज़रूरी नहीं है
अगर यूआरएल का पाथ सेगमेंट, तय की गई स्ट्रिंग से शुरू होता है, तो यह शर्त पूरी होती है.
-
pathSuffix
string ज़रूरी नहीं है
अगर यूआरएल का पाथ सेगमेंट, तय की गई स्ट्रिंग पर खत्म होता है, तो यह शर्त पूरी होती है.
-
ports
(number | number[])[] optional
अगर यूआरएल का पोर्ट, बताई गई किसी भी पोर्ट सूची में शामिल है, तो यह शर्त पूरी होती है. उदाहरण के लिए,
[80, 443, [1000, 1200]]पोर्ट 80, 443 और 1000 से 1200 की रेंज में मौजूद सभी अनुरोधों से मैच करता है. -
queryContains
string ज़रूरी नहीं है
अगर यूआरएल के क्वेरी सेगमेंट में बताई गई स्ट्रिंग मौजूद है, तो यह फ़ंक्शन काम करता है.
-
queryEquals
string ज़रूरी नहीं है
अगर यूआरएल का क्वेरी सेगमेंट, तय की गई स्ट्रिंग के बराबर है, तो यह शर्त पूरी होती है.
-
queryPrefix
string ज़रूरी नहीं है
अगर यूआरएल का क्वेरी सेगमेंट, तय की गई स्ट्रिंग से शुरू होता है, तो यह शर्त पूरी होती है.
-
querySuffix
string ज़रूरी नहीं है
अगर यूआरएल का क्वेरी सेगमेंट, तय की गई स्ट्रिंग पर खत्म होता है, तो यह शर्त पूरी होती है.
-
स्कीम
string[] ज़रूरी नहीं है
अगर यूआरएल की स्कीम, ऐरे में दी गई किसी भी स्कीम के बराबर है, तो यह मैच करता है.
-
urlContains
string ज़रूरी नहीं है
अगर यूआरएल (बिना फ़्रैगमेंट आइडेंटिफ़ायर के) में कोई तय स्ट्रिंग मौजूद है, तो यह शर्त पूरी होती है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है.
-
urlEquals
string ज़रूरी नहीं है
अगर यूआरएल (बिना फ़्रैगमेंट आइडेंटिफ़ायर के) तय की गई स्ट्रिंग के बराबर है, तो यह शर्त पूरी होती है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है.
-
urlMatches
string ज़रूरी नहीं है
यह तब मैच होता है, जब यूआरएल (बिना फ़्रैगमेंट आइडेंटिफ़ायर के) किसी तय किए गए रेगुलर एक्सप्रेशन से मैच होता है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है. रेगुलर एक्सप्रेशन, RE2 सिंटैक्स का इस्तेमाल करते हैं.
-
urlPrefix
string ज़रूरी नहीं है
अगर यूआरएल (बिना फ़्रैगमेंट आइडेंटिफ़ायर के) किसी तय स्ट्रिंग से शुरू होता है, तो यह शर्त पूरी होती है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है.
-
urlSuffix
string ज़रूरी नहीं है
अगर यूआरएल (फ़्रैगमेंट आइडेंटिफ़ायर के बिना) किसी तय की गई स्ट्रिंग पर खत्म होता है, तो यह शर्त पूरी होती है. अगर पोर्ट नंबर, डिफ़ॉल्ट पोर्ट नंबर से मेल खाते हैं, तो उन्हें यूआरएल से हटा दिया जाता है.