ब्यौरा
किसी पेज के कॉन्टेंट के हिसाब से कार्रवाइयां करने के लिए, chrome.declarativeContent
एपीआई का इस्तेमाल करें. इसके लिए, पेज का कॉन्टेंट पढ़ने की अनुमति की ज़रूरत नहीं होती है.
अनुमतियां
declarativeContent
सिद्धांत और उनका इस्तेमाल
डिक्लेरेटिव Content API की मदद से, एक्सटेंशन की कार्रवाई चालू की जा सकती है. यह इस बात पर निर्भर करता है कि या अगर कोई सीएसएस सिलेक्टर, पेज के किसी एलिमेंट से मेल खाता है, तो ऐसा करने की ज़रूरत नहीं है. होस्ट की अनुमतियां जोड़ें या कॉन्टेंट स्क्रिप्ट इंजेक्ट करें.
उपयोगकर्ता के क्लिक किए जाने के बाद, पेज से इंटरैक्ट करने के लिए activeTab अनुमति का इस्तेमाल करें एक्सटेंशन की कार्रवाई के बारे में ज़्यादा जानें.
नियम
नियमों में शर्तें और कार्रवाइयां शामिल हैं. अगर कोई एक शर्त पूरी होती है, तो सभी कार्रवाइयां
लागू किया गया. कार्रवाइयां setIcon()
और showAction()
हैं.
PageStateMatcher
वेब पेजों से तब ही मैच होता है, जब सभी यूआरएल सूची में मौजूद हों.
शर्तें पूरी होती हैं. यह किसी पेज के यूआरएल, css कंपाउंड सिलेक्टर, से मेल खा सकता है
या पेज की बुकमार्क की गई स्थिति में. यह नियम चालू करता है
पासवर्ड फ़ील्ड मौजूद होने पर Google पेज पर एक्सटेंशन की कार्रवाई:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Google साइटों के लिए वीडियो के साथ एक्सटेंशन की कार्रवाई भी चालू करने के लिए, शर्त ऐसी होती है जिसमें बताई गई सभी कार्रवाइयों को ट्रिगर करने के लिए हर शर्त काफ़ी होती है:
let rule2 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
}),
new chrome.declarativeContent.PageStateMatcher({
css: ["video"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
onPageChanged
इवेंट से यह पता चलता है कि किसी नियम में कम से कम एक नियम पूरा हुआ है या नहीं
शर्त तय करता है और कार्रवाइयां करता है. नियम सभी ब्राउज़िंग सेशन में लागू रहते हैं; इसलिए, इस दौरान
एक्सटेंशन इंस्टॉल करने का समय हटाने के लिए, आपको पहले removeRules
का इस्तेमाल करना चाहिए
नए नियमों को रजिस्टर करने के लिए, addRules
का इस्तेमाल करें.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
activeTab अनुमति के साथ, आपका एक्सटेंशन कोई भी अनुमति नहीं दिखाएगा चेतावनियां दिखाई जाती हैं और जब उपयोगकर्ता एक्सटेंशन कार्रवाई पर क्लिक करता है, तो यह सिर्फ़ काम के पेजों पर चलेगा.
पेज यूआरएल का मिलान
यूआरएल की शर्तें पूरी होने पर, PageStateMatcher.pageurl
मैच होता है. कॉन्टेंट बनाने
सबसे सामान्य शर्तें हैं: होस्ट, पाथ या यूआरएल को जोड़ना. इसके बाद 'इसमें शामिल है', 'बराबर', 'प्रीफ़िक्स' या
प्रत्यय. नीचे दी गई टेबल में कुछ उदाहरण दिए गए हैं:
नियम और शर्तें | मैच करती स्ट्रिंग |
---|---|
{ hostSuffix: 'google.com' } |
Google के सभी यूआरएल |
{ pathPrefix: '/docs/extensions' } |
एक्सटेंशन दस्तावेज़ों के यूआरएल |
{ urlContains: 'developer.chrome.com' } |
Chrome डेवलपर के सभी दस्तावेज़ों के यूआरएल |
सभी शर्तें, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होती हैं. शर्तों की पूरी सूची के लिए, UrlFilter देखें.
सीएसएस मैचिंग
PageStateMatcher.css
शर्तें, कंपाउंड सिलेक्टर होनी चाहिए,
इसका मतलब है कि खाली सफ़ेद जगह या ">
" जैसे कॉम्बिनेटर को शामिल नहीं किया जा सकता आपके
सिलेक्टर. इससे Chrome को सिलेक्टर का बेहतर तरीके से मिलान करने में मदद मिलती है.
कंपाउंड सिलेक्टर (ठीक है) | कॉम्प्लेक्स सिलेक्टर (ठीक नहीं है) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
सीएसएस की शर्तें, सिर्फ़ दिखाए गए एलिमेंट से मेल खाती हैं: अगर आपके सिलेक्टर से मेल खाने वाला कोई एलिमेंट
display:none
या इसका कोई एक पैरंट एलिमेंट display:none
है, इससे शर्त नहीं बनती
मिलान. एलिमेंट visibility:hidden
के साथ स्टाइल किए गए हैं, स्क्रीन पर नहीं दिख रहे हैं या दूसरे एलिमेंट ने छिपा दिए हैं
आपकी स्थिति को अब भी मैच कर सकता है.
बुकमार्क की गई स्थिति का मिलान
PageStateMatcher.isBookmarked
शर्त
उपयोगकर्ता की प्रोफ़ाइल में मौजूदा यूआरएल की बुकमार्क की गई स्थिति. इस शर्त का इस्तेमाल करने के लिए
"बुकमार्क" अनुमति का एलान एक्सटेंशन मेनिफ़ेस्ट में किया जाना चाहिए.
टाइप
ImageDataType
https://developer.mozilla.org/en-US/docs/Web/API/ImageData पर जाएं.
टाइप
ImageData
PageStateMatcher
कई शर्तों के आधार पर, किसी वेब पेज की स्थिति से मेल खाता है.
प्रॉपर्टी
-
कंस्ट्रक्टर
अमान्य
constructor
फ़ंक्शन इस तरह दिखता है:(arg: PageStateMatcher) => {...}
-
आर्ग्युमेंट
-
returns
-
-
css
स्ट्रिंग[] ज़रूरी नहीं
तब मैच होता है, जब अरे में मौजूद सभी सीएसएस सिलेक्टर, किसी फ़्रेम में उन एलिमेंट से मेल खाते हों जो पेज के मुख्य फ़्रेम की साइट पर मौजूद हैं. मैच करने की रफ़्तार को बढ़ाने के लिए, इस कलेक्शन में सभी सिलेक्टर कंपाउंड सिलेक्टर होने चाहिए. ध्यान दें: हर पेज पर सैकड़ों बार मेल खाने वाले सैकड़ों सीएसएस सिलेक्टर या लिस्टिंग सीएसएस सिलेक्टर की सूची बनाने से वेब साइटें धीमी हो सकती हैं.
-
isBookmarked
बूलियन ज़रूरी नहीं
Chrome 45+मेल खाता है, अगर पेज की बुकमार्क की गई स्थिति, तय की गई वैल्यू के बराबर हो. इसके लिए, बुकमार्क करने की अनुमति की ज़रूरत होती है.
-
pageUrl
UrlFilter ज़रूरी नहीं
पेज के टॉप लेवल यूआरएल के लिए,
UrlFilter
की शर्तें पूरी होने पर मैच होता है.
RequestContentScript
डिक्लेरेटिव इवेंट की कार्रवाई, जो कॉन्टेंट स्क्रिप्ट इंजेक्ट करती है.
चेतावनी: यह कार्रवाई अब भी एक्सपेरिमेंट के तौर पर उपलब्ध है. यह Chrome के स्टेबल बिल्ड पर काम नहीं करती.
प्रॉपर्टी
-
कंस्ट्रक्टर
अमान्य
constructor
फ़ंक्शन इस तरह दिखता है:(arg: RequestContentScript) => {...}
-
आर्ग्युमेंट
-
returns
-
-
allFrames
बूलियन ज़रूरी नहीं
कॉन्टेंट स्क्रिप्ट, मिलते-जुलते पेज के सभी फ़्रेम में चलती है या सिर्फ़ टॉप फ़्रेम में. डिफ़ॉल्ट वैल्यू
false
है. -
css
स्ट्रिंग[] ज़रूरी नहीं
कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर, सीएसएस फ़ाइलों के नाम डाले जाएंगे.
-
जेएस
स्ट्रिंग[] ज़रूरी नहीं
JavaScript फ़ाइलों के नाम, जिन्हें कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर डाला जाएगा.
-
matchAboutBlank
बूलियन ज़रूरी नहीं
about:blank
औरabout:srcdoc
पर कॉन्टेंट स्क्रिप्ट डालनी है या नहीं. डिफ़ॉल्ट वैल्यूfalse
है.
SetIcon
एलान वाली इवेंट कार्रवाई जो एक्सटेंशन की पेज कार्रवाई या ब्राउज़र कार्रवाई के लिए एन-डिप स्क्वेयर आइकॉन सेट करती है, जबकि संबंधित शर्तें पूरी हो जाती हैं. इस कार्रवाई का इस्तेमाल, होस्ट की अनुमतियों के बिना भी किया जा सकता है. हालांकि, एक्सटेंशन में पेज या ब्राउज़र से जुड़ी कार्रवाई ज़रूर होनी चाहिए.
imageData
या path
में से कोई एक बताना ज़रूरी है. दोनों शब्दकोश, इमेज दिखाने के लिए कई पिक्सल की मैपिंग कर रहे हैं. imageData
में दिखाया गया इमेज, एक ImageData ऑब्जेक्ट है; उदाहरण के लिए, canvas
एलिमेंट से, जबकि path
में इमेज को दिखाने के लिए चुनी गई इमेज, एक्सटेंशन के मेनिफ़ेस्ट से मिलती-जुलती इमेज फ़ाइल का पाथ होती है. अगर scale
स्क्रीन पिक्सल, डिवाइस-इंडिपेंडेंट पिक्सल में फ़िट होते हैं, तो scale * n
आइकॉन का इस्तेमाल किया जाता है. अगर वह स्केल मौजूद नहीं है, तो किसी दूसरी इमेज का साइज़ बदलकर ज़रूरी साइज़ कर दिया जाता है.
प्रॉपर्टी
-
कंस्ट्रक्टर
अमान्य
constructor
फ़ंक्शन इस तरह दिखता है:(arg: SetIcon) => {...}
-
आर्ग्युमेंट
-
returns
-
-
इमेज डेटा
ImageData | ऑब्जेक्ट ज़रूरी नहीं
ImageData
ऑब्जेक्ट या डिक्शनरी {size -> ImageData}, सेट किए जाने वाले आइकॉन को दिखाता है. अगर आइकॉन को डिक्शनरी के तौर पर बताया गया है, तो इस्तेमाल की गई इमेज को स्क्रीन की पिक्सल डेंसिटी के आधार पर चुना जाता है. अगर किसी स्क्रीन स्पेस यूनिट में फ़िट होने वाले इमेज पिक्सल की संख्याscale
है, तोscale * n
साइज़ वाली इमेज चुनी जाती है. यहां n, यूज़र इंटरफ़ेस (यूआई) में आइकॉन का साइज़ होगा. कम से कम एक इमेज के बारे में बताना ज़रूरी है. ध्यान दें किdetails.imageData = foo
,details.imageData = {'16': foo}
के बराबर है.
ShowAction
डिक्लेरेटिव इवेंट की कार्रवाई, जो एक्सटेंशन के टूलबार की कार्रवाई को चालू स्थिति पर सेट करती है. इस कार्रवाई से जुड़ी शर्तें पूरी होती हैं. यह कार्रवाई, होस्ट की अनुमतियों के बिना भी की जा सकती है. अगर एक्सटेंशन के पास activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से ऐक्टिव टैब का ऐक्सेस मिल जाता है.
जिन पेजों पर शर्तें पूरी नहीं होंगी, उन पर एक्सटेंशन के टूलबार की कार्रवाई ग्रेस्केल दिखेगी. इस कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुल जाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
अमान्य
constructor
फ़ंक्शन इस तरह दिखता है:(arg: ShowAction) => {...}
-
आर्ग्युमेंट
-
returns
-
ShowPageAction
कृपया declarativeContent.ShowAction
का इस्तेमाल करें.
डिक्लेरेटिव इवेंट की कार्रवाई, जो एक्सटेंशन के पेज की कार्रवाई को चालू स्थिति पर सेट करती है. इस कार्रवाई से जुड़ी शर्तें पूरी होती हैं. इस कार्रवाई का इस्तेमाल, होस्ट की अनुमतियों के बिना भी किया जा सकता है. हालांकि, एक्सटेंशन में पेज से जुड़ी कोई कार्रवाई ज़रूर होनी चाहिए. अगर एक्सटेंशन के पास activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से ऐक्टिव टैब का ऐक्सेस मिल जाता है.
जिन पेजों पर शर्तें पूरी नहीं होंगी, उन पर एक्सटेंशन के टूलबार की कार्रवाई ग्रेस्केल दिखेगी. इस कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुल जाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
अमान्य
constructor
फ़ंक्शन इस तरह दिखता है:(arg: ShowPageAction) => {...}
-
आर्ग्युमेंट
-
returns
-
इवेंट
onPageChanged
यह घोषणा इवेंट एपीआई उपलब्ध कराता है. इसमें addRules
, removeRules
, और getRules
शामिल हैं.