chrome.declarativeContent

ब्यौरा

किसी पेज के कॉन्टेंट के हिसाब से कार्रवाइयां करने के लिए, 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 अनुमति से, आपका एक्सटेंशन कोई भी अनुमति चेतावनी नहीं दिखाएगा और जब उपयोगकर्ता एक्सटेंशन कार्रवाई पर क्लिक करेगा, तो वह केवल प्रासंगिक पेजों पर चलेगा.

पेज यूआरएल का मिलान हो रहा है

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

टाइप

टाइप

ImageData

PageStateMatcher

अलग-अलग शर्तों के हिसाब से, वेब पेज की स्थिति से मैच करता है.

प्रॉपर्टी

  • कंस्ट्रक्टर

    void

    constructor फ़ंक्शन ऐसा दिखता है:

    (arg: PageStateMatcher)=> {...}

  • css

    स्ट्रिंग[] ज़रूरी नहीं है

    यह तब मैच करता है, जब कलेक्शन में मौजूद सभी सीएसएस सिलेक्टर, फ़्रेम में दिखाए गए एलिमेंट से मिलते-जुलते ऑरिजिन और पेज के मुख्य फ़्रेम से मेल खाते हैं. इस कलेक्शन में मौजूद सभी सिलेक्टर, कंपाउंड सिलेक्टर होने चाहिए, ताकि तेज़ी से मैच किया जा सके. ध्यान दें: हर पेज पर सैकड़ों बार मेल खाने वाले सैकड़ों सीएसएस सिलेक्टर या लिस्टिंग सीएसएस सिलेक्टर की लिस्टिंग जोड़ने से, वेबसाइटों के लोड होने की स्पीड कम हो सकती है.

  • isBookmarked

    बूलियन ज़रूरी नहीं

    Chrome 45+

    तब मैच करता है, जब पेज को बुकमार्क करने की स्थिति, बताई गई वैल्यू के बराबर होती है. इसके लिए, बुकमार्क की अनुमति ज़रूरी है.

  • pageUrl

    UrlFilter ज़रूरी नहीं

    यह तब मैच करता है, जब पेज के टॉप-लेवल के यूआरएल के लिए, UrlFilter की शर्तें पूरी होती हैं.

RequestContentScript

जानकारी देने वाला इवेंट, जो कॉन्टेंट स्क्रिप्ट इंजेक्ट करता है.

चेतावनी: यह कार्रवाई अब भी प्रयोग के तौर पर है और Chrome के स्टेबल बिल्ड पर काम नहीं करती.

प्रॉपर्टी

  • कंस्ट्रक्टर

    void

    constructor फ़ंक्शन ऐसा दिखता है:

    (arg: RequestContentScript)=> {...}

  • 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)=> {...}

    • आर्ग्युमेंट
  • imageData

    ImageData|ऑब्जेक्ट ज़रूरी नहीं

    ImageData ऑब्जेक्ट या डिक्शनरी {size -> ImageData}, जो सेट किए जाने वाले आइकॉन को दिखाता है. अगर आइकॉन को डिक्शनरी के तौर पर दिखाया गया है, तो इस्तेमाल की जाने वाली इमेज, स्क्रीन की पिक्सल की सघनता के आधार पर चुनी जाती है. अगर एक स्क्रीन स्पेस यूनिट में फ़िट होने वाले इमेज पिक्सल की संख्या scale के बराबर है, तो scale * n साइज़ वाली इमेज चुनी जाती है. यहां n, यूज़र इंटरफ़ेस (यूआई) में दिखने वाले आइकॉन का साइज़ है. कम से कम एक इमेज का होना ज़रूरी है. ध्यान दें कि details.imageData = foo, details.imageData = {'16': foo} के बराबर है.

ShowAction

Chrome 97 और इसके बाद के वर्शन

यह एक डिक्लेरेटिव इवेंट ऐक्शन है, जो एक्सटेंशन की टूलबार कार्रवाई को 'चालू है' पर सेट करता है. साथ ही, इससे जुड़ी शर्तें भी पूरी होती हैं. इस कार्रवाई का इस्तेमाल होस्ट की अनुमतियों के बिना किया जा सकता है. अगर एक्सटेंशन में activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से सक्रिय टैब का ऐक्सेस मिल जाता है.

शर्तें पूरी न करने वाले पेजों पर, एक्सटेंशन के टूलबार की कार्रवाई ग्रे-स्केल होगी. ऐसे में, कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुलेगा.

प्रॉपर्टी

  • कंस्ट्रक्टर

    void

    constructor फ़ंक्शन ऐसा दिखता है:

    (arg: ShowAction)=> {...}

ShowPageAction

Chrome 97 के बाद से अब सेवा में नहीं है

कृपया declarativeContent.ShowAction का इस्तेमाल करें.

एक डिक्लेरेटिव इवेंट ऐक्शन, जो एक्सटेंशन से जुड़ी शर्तों के पूरा होने के दौरान, एक्सटेंशन की पेज कार्रवाई को 'चालू है' पर सेट करता है. इस कार्रवाई का इस्तेमाल होस्ट की अनुमतियों के बिना किया जा सकता है, लेकिन एक्सटेंशन में पेज पर कार्रवाई होना ज़रूरी है. अगर एक्सटेंशन में activeTab अनुमति है, तो पेज कार्रवाई पर क्लिक करने से सक्रिय टैब का ऐक्सेस मिल जाता है.

शर्तें पूरी न करने वाले पेजों पर, एक्सटेंशन के टूलबार की कार्रवाई ग्रे-स्केल होगी. ऐसे में, कार्रवाई को ट्रिगर करने के बजाय, इस पर क्लिक करने से संदर्भ मेन्यू खुलेगा.

प्रॉपर्टी

इवेंट

onPageChanged

एलान वाले इवेंट का एपीआई उपलब्ध कराता है. इसमें addRules, removeRules, और getRules शामिल हैं.

शर्तें

कार्रवाइयाँ