chrome.declarativeContent

ब्यौरा

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

टाइप

टाइप

ImageData

PageStateMatcher

कई शर्तों के आधार पर, किसी वेब पेज की स्थिति से मेल खाता है.

प्रॉपर्टी

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

    अमान्य

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

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

  • css

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

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

  • isBookmarked

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

    Chrome 45+

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

  • pageUrl

    UrlFilter ज़रूरी नहीं

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

RequestContentScript

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

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

प्रॉपर्टी

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

    अमान्य

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

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

  • allFrames

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

    कॉन्टेंट स्क्रिप्ट, मिलते-जुलते पेज के सभी फ़्रेम में चलती है या सिर्फ़ टॉप फ़्रेम में. डिफ़ॉल्ट वैल्यू false है.

  • css

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

    कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर, सीएसएस फ़ाइलों के नाम डाले जाएंगे.

  • जेएस

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

    JavaScript फ़ाइलों के नाम, जिन्हें कॉन्टेंट स्क्रिप्ट के हिस्से के तौर पर डाला जाएगा.

  • matchAboutBlank

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

    about:blank और about:srcdoc पर कॉन्टेंट स्क्रिप्ट डालनी है या नहीं. डिफ़ॉल्ट वैल्यू false है.

SetIcon

एलान वाली इवेंट कार्रवाई जो एक्सटेंशन की पेज कार्रवाई या ब्राउज़र कार्रवाई के लिए एन-डिप स्क्वेयर आइकॉन सेट करती है, जबकि संबंधित शर्तें पूरी हो जाती हैं. इस कार्रवाई का इस्तेमाल, होस्ट की अनुमतियों के बिना भी किया जा सकता है. हालांकि, एक्सटेंशन में पेज या ब्राउज़र से जुड़ी कार्रवाई ज़रूर होनी चाहिए.

imageData या path में से कोई एक बताना ज़रूरी है. दोनों शब्दकोश, इमेज दिखाने के लिए कई पिक्सल की मैपिंग कर रहे हैं. imageData में दिखाया गया इमेज, एक ImageData ऑब्जेक्ट है; उदाहरण के लिए, canvas एलिमेंट से, जबकि path में इमेज को दिखाने के लिए चुनी गई इमेज, एक्सटेंशन के मेनिफ़ेस्ट से मिलती-जुलती इमेज फ़ाइल का पाथ होती है. अगर scale स्क्रीन पिक्सल, डिवाइस-इंडिपेंडेंट पिक्सल में फ़िट होते हैं, तो scale * n आइकॉन का इस्तेमाल किया जाता है. अगर वह स्केल मौजूद नहीं है, तो किसी दूसरी इमेज का साइज़ बदलकर ज़रूरी साइज़ कर दिया जाता है.

प्रॉपर्टी

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

    अमान्य

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

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

    • आर्ग्युमेंट
  • इमेज डेटा

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

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

ShowAction

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

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

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

प्रॉपर्टी

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

    अमान्य

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

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

ShowPageAction

Chrome 97 के बाद से अब तक काम नहीं करता

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

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

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

प्रॉपर्टी

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

    अमान्य

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

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

इवेंट

onPageChanged

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

शर्तें

कार्रवाइयां