मेनिफ़ेस्ट - कॉन्टेंट स्क्रिप्ट

"content_scripts" कुंजी, स्टैटिक तरीके से लोड होने वाली उस JavaScript या सीएसएस फ़ाइल के बारे में बताती है जिसका इस्तेमाल, किसी खास यूआरएल पैटर्न से मेल खाने वाले पेज को हर बार खोलने पर किया जाता है. एक्सटेंशन, प्रोग्राम के हिसाब से भी कॉन्टेंट स्क्रिप्ट इंजेक्ट कर सकते हैं. ज़्यादा जानकारी के लिए, स्क्रिप्ट इंजेक्ट करना लेख पढ़ें.

मेनिफ़ेस्ट

ये "content_scripts" के साथ काम करने वाली कुंजियां हैं. सिर्फ़ "matches" कुंजी और "js" या "css" में से किसी एक की ज़रूरत है.

manifest.json

{
 "name": "My extension",
 ...
 "content_scripts": [
   {
     "matches": ["https://*.example.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"],
     "exclude_matches": ["*://*/*foo*"],
     "include_globs": ["*example.com/???s/*"],
     "exclude_globs": ["*bar*"],     
     "all_frames": false,
     "match_origin_as_fallback": false,
     "match_about_blank": false,
     "run_at": "document_idle",
     "world": "ISOLATED",
   }
 ],
 ...
}

फ़ाइलें

हर फ़ाइल में, एक्सटेंशन की रूट डायरेक्ट्री में मौजूद संसाधन का एक मिलता-जुलता पाथ होना चाहिए. लीडिंग स्लैश (/) अपने-आप ट्रिम हो जाते हैं. "run_at" कुंजी से तय होता है कि हर फ़ाइल कब शामिल की जाएगी.

"css" - कलेक्शन
ज़रूरी नहीं है. सीएसएस फ़ाइल पाथ की कलेक्शन, जिसे इस कलेक्शन के क्रम में इंजेक्ट किया गया और किसी भी डीओएम कंस्ट्रक्शन या पेज रेंडरिंग के पहले डाला गया.
"js" - कलेक्शन,
ज़रूरी नहीं है. JavaScript फ़ाइल के पाथ का कलेक्शन, जिसमें css फ़ाइलें इंजेक्ट किए जाने के बाद, इस कलेक्शन में दिखने के क्रम में इंजेक्ट किया जाता है. कलेक्शन में मौजूद हर स्ट्रिंग, एक्सटेंशन की रूट डायरेक्ट्री में मौजूद किसी संसाधन से मिलती-जुलती होनी चाहिए. लीडिंग स्लैश ('/') अपने-आप ट्रिम हो जाते हैं.

मिलान करने वाले यूआरएल

सिर्फ़ "matches" प्रॉपर्टी ज़रूरी है. इसके बाद, "exclude_matches", "include_globs", और "exclude_globs" का इस्तेमाल करके, यह तय किया जा सकता है कि किन यूआरएल में कोड इंजेक्ट करना है. "matches" कुंजी से चेतावनी ट्रिगर होगी.

"matches" - कलेक्शन
ज़रूरी है. इससे पता चलता है कि कॉन्टेंट स्क्रिप्ट को किन यूआरएल पैटर्न में इंजेक्ट करना है. सिंटैक्स के लिए मैच पैटर्न देखें.
"exclude_matches" - कलेक्शन
ज़रूरी नहीं है. इसमें कॉन्टेंट स्क्रिप्ट डालने के लिए, यूआरएल पैटर्न शामिल नहीं किए जाते. सिंटैक्स के लिए मैच पैटर्न देखें.
"include_globs" - कलेक्शन
ज़रूरी नहीं है. मैच होने के बाद, सिर्फ़ वे यूआरएल शामिल किए जाते हैं जो इस ग्लोब से मेल खाते हैं. इसका मकसद, @include Greasemonkey कीवर्ड को एम्युलेट करना है.
"exclude_globs" - कलेक्शन
ज़रूरी नहीं है. इस ग्लोब से मेल खाने वाले यूआरएल को बाहर रखने के लिए, मैच होने के बाद लागू किया गया. इसका मकसद, Greasemonkey कीवर्ड @remove को एम्युलेट करना है.

ग्लोब यूआरएल वे होते हैं जिनमें "वाइल्डकार्ड" होते हैं * और प्रश्न चिह्न शामिल करें. वाइल्डकार्ड *, किसी भी लंबाई वाली स्ट्रिंग से मेल खाता है. इसमें एक खाली स्ट्रिंग भी शामिल है. साथ ही, सवाल का निशान ? किसी एक वर्ण से मैच करता है.

कॉन्टेंट स्क्रिप्ट को किसी पेज में तब डाला जाता है, जब:

  • इसका यूआरएल किसी भी "matches" और "include_globs" पैटर्न से मेल खाता है.
  • साथ ही, यूआरएल "exclude_matches" या "exclude_globs" पैटर्न से मेल नहीं खाता.

ग्लोब और यूआरएल मैचिंग के उदाहरण

"include_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["https://???.example.com/foo/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
मैच करती स्ट्रिंग
https://www.example.com/foo/bar
https://the.example.com/foo/
मिलान नहीं होता है
https://my.example.com/foo/bar
https://example.com/foo/*
https://www.example.com/foo

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["*example.com/???s/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
मैच करती स्ट्रिंग
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
मिलान नहीं होता है
https://www.example.com/sports/index.html
https://www.example.com/music/index.html

"exclude_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
मैच करती स्ट्रिंग
https://history.example.com
https://.example.com/music
मिलान नहीं होता है
https://science.example.com
https://www.example.com/science

पसंद के मुताबिक बनाने के बेहतर उदाहरण

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_matches": ["*://*/*business*"],
      "include_globs": ["*example.com/???s/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
मैच करती स्ट्रिंग
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
मिलान नहीं होता है
https://science.example.com
https://www.example.com/jobs/business
https://www.example.com/science

फ़्रेम

"all_frames" कुंजी से यह तय होता है कि कॉन्टेंट स्क्रिप्ट को, यूआरएल की तय शर्तों से मेल खाने वाले सभी फ़्रेम में इंजेक्ट किया जाना चाहिए या नहीं. अगर इसे false पर सेट किया जाता है, तो यह सिर्फ़ सबसे ऊपर वाले फ़्रेम में इंजेक्ट करेगा. about:blank फ़्रेम में इंजेक्ट करने के लिए, इसे "match_about_blank" के साथ इस्तेमाल किया जा सकता है.

data:, blob:, और filesystem: जैसे दूसरे फ़्रेम इंजेक्ट करने के लिए, "match_origin_as_fallback" को true पर सेट करें. ज़्यादा जानकारी के लिए, मिलते-जुलते फ़्रेम में इंजेक्ट करें लेख पढ़ें