कंपनी का ब्यौरा
किसी पेज के कॉन्टेंट के हिसाब से कार्रवाइयां करने के लिए, chrome.declarativeContent
API का इस्तेमाल करें. इसके लिए, पेज पर मौजूद कॉन्टेंट पढ़ने की ज़रूरत नहीं है.
अनुमतियां
declarativeContent
इस्तेमाल का तरीका
डिक्लेरेटिव कॉन्टेंट एपीआई से, वेब पेज के यूआरएल के आधार पर अपने एक्सटेंशन की कार्रवाई चालू की जा सकती है. इसके अलावा, ऐसा तब भी किया जा सकता है, जब सीएसएस सिलेक्टर, पेज पर किसी एलिमेंट से मिलता-जुलता हो. इसके लिए, होस्ट की अनुमतियों को जोड़ने या कॉन्टेंट स्क्रिप्ट इंजेक्ट करने की ज़रूरत नहीं होती.
एक्सटेंशन की कार्रवाई पर उपयोगकर्ता के क्लिक करने के बाद, किसी पेज से इंटरैक्ट करने के लिए 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 अनुमति से, आपका एक्सटेंशन कोई भी अनुमति चेतावनी नहीं दिखाएगा और जब उपयोगकर्ता एक्सटेंशन कार्रवाई पर क्लिक करेगा, तो वह केवल प्रासंगिक पेजों पर चलेगा.
पेज URL का मिलान
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
अलग-अलग शर्तों के हिसाब से, वेब पेज की स्थिति से मैच करता है.
प्रॉपर्टी
-
कंस्ट्रक्टर
void
constructor
फ़ंक्शन ऐसा दिखता है:(arg: PageStateMatcher) => {...}
-
आर्ग्युमेंट
-
returns
-
-
css
स्ट्रिंग[] ज़रूरी नहीं है
यह तब मैच करता है, जब कलेक्शन में मौजूद सभी सीएसएस सिलेक्टर, फ़्रेम में दिखाए गए एलिमेंट से मिलते-जुलते ऑरिजिन और पेज के मुख्य फ़्रेम से मेल खाते हैं. इस कलेक्शन में मौजूद सभी सिलेक्टर, कंपाउंड सिलेक्टर होने चाहिए, ताकि तेज़ी से मैच किया जा सके. ध्यान दें: हर पेज पर सैकड़ों बार मेल खाने वाले सैकड़ों सीएसएस सिलेक्टर या लिस्टिंग सीएसएस सिलेक्टर की लिस्टिंग जोड़ने से, वेबसाइटों के लोड होने की स्पीड कम हो सकती है.
-
isBookmarked
बूलियन ज़रूरी नहीं
Chrome 45+तब मैच करता है, जब पेज को बुकमार्क करने की स्थिति, बताई गई वैल्यू के बराबर होती है. इसके लिए, बुकमार्क की अनुमति ज़रूरी है.
-
pageUrl
UrlFilter ज़रूरी नहीं
यह तब मैच करता है, जब पेज के टॉप-लेवल के यूआरएल के लिए,
UrlFilter
की शर्तें पूरी होती हैं.
RequestContentScript
जानकारी देने वाला इवेंट, जो कॉन्टेंट स्क्रिप्ट इंजेक्ट करता है.
चेतावनी: यह कार्रवाई अब भी प्रयोग के तौर पर है और Chrome के स्टेबल बिल्ड पर काम नहीं करती.
प्रॉपर्टी
-
कंस्ट्रक्टर
void
constructor
फ़ंक्शन ऐसा दिखता है:(arg: RequestContentScript) => {...}
-
आर्ग्युमेंट
-
returns
-
-
allFrames
बूलियन ज़रूरी नहीं
कॉन्टेंट स्क्रिप्ट, मिलते-जुलते पेज के सभी फ़्रेम में चलती है या सिर्फ़ टॉप फ़्रेम में. डिफ़ॉल्ट वैल्यू
false
है. -
css
स्ट्रिंग[] ज़रूरी नहीं है
उन सीएसएस फ़ाइलों के नाम जिन्हें कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर डाला जाना है.
-
js
स्ट्रिंग[] ज़रूरी नहीं है
कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर इंजेक्ट की जाने वाली JavaScript फ़ाइलों के नाम.
-
matchAboutBlank
बूलियन ज़रूरी नहीं
about:blank
औरabout:srcdoc
पर कॉन्टेंट स्क्रिप्ट शामिल की जाए या नहीं. डिफ़ॉल्ट वैल्यूfalse
है.
SetIcon
डिक्लेरेटिव इवेंट ऐक्शन, जो एक्सटेंशन से जुड़ी शर्तें पूरी होने के दौरान, उसके पेज ऐक्शन या ब्राउज़र ऐक्शन के लिए n-डिप स्क्वेयर आइकॉन सेट करता है. इस कार्रवाई का इस्तेमाल होस्ट की अनुमतियों के बिना किया जा सकता है. हालांकि, एक्सटेंशन में एक पेज या ब्राउज़र कार्रवाई होनी चाहिए.
imageData
या path
में से कोई एक बताना ज़रूरी है. दोनों डिक्शनरी, किसी इमेज के साथ कई पिक्सल मैप कर रही हैं. imageData
में दिखाई गई इमेज, ImageData ऑब्जेक्ट है. उदाहरण के लिए, canvas
एलिमेंट से, जबकि path
में इमेज के तौर पर दिखाया गया एलिमेंट, एक्सटेंशन के मेनिफ़ेस्ट से मेल खाने वाली किसी इमेज फ़ाइल का पाथ है. अगर scale
स्क्रीन पिक्सल, डिवाइस के अलग-अलग पिक्सल में फ़िट होते हैं, तो scale * n
आइकॉन का इस्तेमाल किया जाता है. अगर वह स्केल मौजूद नहीं है, तो दूसरी इमेज का साइज़ बदलकर ज़रूरी साइज़ कर दिया जाता है.
प्रॉपर्टी
-
कंस्ट्रक्टर
void
constructor
फ़ंक्शन ऐसा दिखता है:(arg: SetIcon) => {...}
-
आर्ग्युमेंट
-
returns
-
-
imageData
ImageData | ऑब्जेक्ट ज़रूरी नहीं
ImageData
ऑब्जेक्ट या डिक्शनरी {size -> ImageData}, जो सेट किए जाने वाले आइकॉन को दिखाता है. अगर आइकॉन को डिक्शनरी के तौर पर दिखाया गया है, तो इस्तेमाल की जाने वाली इमेज, स्क्रीन की पिक्सल की सघनता के आधार पर चुनी जाती है. अगर एक स्क्रीन स्पेस यूनिट में फ़िट होने वाले इमेज पिक्सल की संख्याscale
के बराबर है, तोscale * n
साइज़ वाली इमेज चुनी जाती है. यहां n, यूज़र इंटरफ़ेस (यूआई) में दिखने वाले आइकॉन का साइज़ है. कम से कम एक इमेज का होना ज़रूरी है. ध्यान दें किdetails.imageData = foo
,details.imageData = {'16': foo}
के बराबर है.
ShowAction
यह एक डिक्लेरेटिव इवेंट ऐक्शन है, जो एक्सटेंशन के टूलबार कार्रवाई को 'चालू है' पर सेट करता है. साथ ही, इससे जुड़ी शर्तें भी पूरी होती हैं. इस कार्रवाई का इस्तेमाल होस्ट की अनुमतियों के बिना किया जा सकता है. अगर एक्सटेंशन में activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से सक्रिय टैब का ऐक्सेस मिल जाता है.
शर्तें पूरी न करने वाले पेजों पर, एक्सटेंशन के टूलबार की कार्रवाई ग्रे-स्केल होगी. ऐसे में, कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुलेगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
void
constructor
फ़ंक्शन ऐसा दिखता है:(arg: ShowAction) => {...}
-
आर्ग्युमेंट
-
returns
-
ShowPageAction
कृपया declarativeContent.ShowAction
का इस्तेमाल करें.
यह एक डिक्लेरेटिव इवेंट ऐक्शन है, जो एक्सटेंशन के पेज ऐक्शन को 'चालू है' पर सेट करता है. साथ ही, इससे जुड़ी शर्तें भी पूरी होती हैं. इस कार्रवाई का इस्तेमाल होस्ट की अनुमतियों के बिना किया जा सकता है, लेकिन एक्सटेंशन में पेज पर कार्रवाई होना ज़रूरी है. अगर एक्सटेंशन में activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से सक्रिय टैब का ऐक्सेस मिल जाता है.
शर्तें पूरी न करने वाले पेजों पर, एक्सटेंशन के टूलबार की कार्रवाई ग्रे-स्केल होगी. ऐसे में, कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुलेगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
void
constructor
फ़ंक्शन ऐसा दिखता है:(arg: ShowPageAction) => {...}
-
आर्ग्युमेंट
-
returns
-
इवेंट
onPageChanged
एलान वाले इवेंट का एपीआई उपलब्ध कराता है. इसमें addRules
, removeRules
, और getRules
शामिल हैं.