chrome.scripting

ब्यौरा

अलग-अलग कॉन्टेक्स्ट में स्क्रिप्ट चलाने के लिए, chrome.scripting API का इस्तेमाल करें.

अनुमतियां

scripting

उपलब्धता

Chrome 88+ MV3+

मेनिफ़ेस्ट

chrome.scripting एपीआई का इस्तेमाल करने के लिए, मेनिफ़ेस्ट में "scripting" की अनुमति के साथ-साथ उन पेजों को होस्ट करने की अनुमतियां बताएं जिनमें स्क्रिप्ट इंजेक्ट की जा सकती हैं. "host_permissions" कुंजी या "activeTab" अनुमति का इस्तेमाल करें, जो कुछ समय के लिए होस्ट की अनुमतियां देती है. इस उदाहरण में, ActiveTab की अनुमति का इस्तेमाल किया गया है.

{
  "name": "Scripting Extension",
  "manifest_version": 3,
  "permissions": ["scripting", "activeTab"],
  ...
}

सिद्धांत और इस्तेमाल

वेबसाइटों में JavaScript और सीएसएस इंजेक्ट करने के लिए, chrome.scripting API का इस्तेमाल किया जा सकता है. यह ठीक वैसा ही है जैसा कॉन्टेंट स्क्रिप्ट के साथ किया जा सकता है. हालांकि, chrome.scripting नेमस्पेस का इस्तेमाल करके, एक्सटेंशन रनटाइम के दौरान फ़ैसले ले सकते हैं.

इंजेक्शन टारगेट

JavaScript या सीएसएस को इंजेक्ट करने के लिए, कोई टारगेट तय करने के लिए, target पैरामीटर का इस्तेमाल करें.

सिर्फ़ tabId फ़ील्ड ज़रूरी है. डिफ़ॉल्ट रूप से, इंजेक्शन बताए गए टैब के मुख्य फ़्रेम में एक इंजेक्शन चलेगा.

function getTabId() { ... }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId()},
      files : [ "script.js" ],
    })
    .then(() => console.log("script injected"));

बताए गए टैब के सभी फ़्रेम में चलाने के लिए, allFrames बूलियन को true पर सेट किया जा सकता है.

function getTabId() { ... }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId(), allFrames : true},
      files : [ "script.js" ],
    })
    .then(() => console.log("script injected in all frames"));

अलग-अलग फ़्रेम आईडी तय करके भी किसी टैब के खास फ़्रेम में इंजेक्ट किया जा सकता है. फ़्रेम आईडी के बारे में ज़्यादा जानकारी के लिए, chrome.webNavigation एपीआई देखें.

function getTabId() { ... }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId(), frameIds : [ frameId1, frameId2 ]},
      files : [ "script.js" ],
    })
    .then(() => console.log("script injected on target frames"));

इंजेक्ट किया गया कोड

एक्सटेंशन यह तय कर सकते हैं कि कोड को बाहरी फ़ाइल या रनटाइम वैरिएबल के ज़रिए इंजेक्ट किया जाए.

Files

फ़ाइलों को ऐसी स्ट्रिंग के तौर पर दिखाया जाता है जो एक्सटेंशन की रूट डायरेक्ट्री से जुड़े पाथ होते हैं. यह कोड script.js फ़ाइल को, टैब के मुख्य फ़्रेम में इंजेक्ट करेगा.

function getTabId() { ... }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId()},
      files : [ "script.js" ],
    })
    .then(() => console.log("injected script file"));

रनटाइम फ़ंक्शन

scripting.executeScript() के साथ JavaScript को इंजेक्ट करते समय, आपके पास यह तय करने का विकल्प होता है कि फ़ाइल के बजाय, कोई फ़ंक्शन लागू किया जाए. यह फ़ंक्शन ऐसा फ़ंक्शन वैरिएबल होना चाहिए जो मौजूदा एक्सटेंशन कॉन्टेक्स्ट के लिए उपलब्ध हो.

function getTabId() { ... }
function getTitle() { return document.title; }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId()},
      func : getTitle,
    })
    .then(() => console.log("injected a function"));
function getTabId() { ... }
function getUserColor() { ... }

function changeBackgroundColor() {
  document.body.style.backgroundColor = getUserColor();
}

chrome.scripting
    .executeScript({
      target : {tabId : getTabId()},
      func : changeBackgroundColor,
    })
    .then(() => console.log("injected a function"));

args प्रॉपर्टी का इस्तेमाल करके, यह काम किया जा सकता है:

function getTabId() { ... }
function getUserColor() { ... }
function changeBackgroundColor(backgroundColor) {
  document.body.style.backgroundColor = backgroundColor;
}

chrome.scripting
    .executeScript({
      target : {tabId : getTabId()},
      func : changeBackgroundColor,
      args : [ getUserColor() ],
    })
    .then(() => console.log("injected a function"));

रनटाइम स्ट्रिंग

किसी पेज में सीएसएस इंजेक्ट करते समय, css प्रॉपर्टी में इस्तेमाल की जाने वाली स्ट्रिंग के बारे में भी बताया जा सकता है. यह विकल्प सिर्फ़ scripting.insertCSS() के लिए उपलब्ध है. scripting.executeScript() का इस्तेमाल करके स्ट्रिंग नहीं चलाई जा सकती.

function getTabId() { ... }
const css = "body { background-color: red; }";

chrome.scripting
    .insertCSS({
      target : {tabId : getTabId()},
      css : css,
    })
    .then(() => console.log("CSS injected"));

नतीजों को मैनेज करना

JavaScript लागू करने के नतीजे, एक्सटेंशन को भेज दिए जाते हैं. हर फ़्रेम के लिए, एक नतीजा शामिल किया जाता है. मुख्य फ़्रेम को नतीजे मिलने वाले कलेक्शन में पहला इंडेक्स होने की गारंटी होती है; अन्य सभी फ़्रेम गैर-तय क्रम में होते हैं.

function getTabId() { ... }
function getTitle() { return document.title; }

chrome.scripting
    .executeScript({
      target : {tabId : getTabId(), allFrames : true},
      func : getTitle,
    })
    .then(injectionResults => {
      for (const {frameId, result} of injectionResults) {
        console.log(`Frame ${frameId} result:`, result);
      }
    });

scripting.insertCSS() कोई नतीजा नहीं दिखाता.

वादे

अगर स्क्रिप्ट एक्ज़ीक्यूशन से मिलने वाली वैल्यू कोई प्रॉमिस है, तो Chrome, प्रॉमिस सेटलमेंट और नतीजे में मिलने वाली वैल्यू मिलने तक इंतज़ार करेगा.

function getTabId() { ... }
async function addIframe() {
  const iframe = document.createElement("iframe");
  const loadComplete =
      new Promise(resolve => iframe.addEventListener("load", resolve));
  iframe.src = "https://example.com";
  document.body.appendChild(iframe);
  await loadComplete;
  return iframe.contentWindow.document.title;
}

chrome.scripting
    .executeScript({
      target : {tabId : getTabId(), allFrames : true},
      func : addIframe,
    })
    .then(injectionResults => {
      for (const frameResult of injectionResults) {
        const {frameId, result} = frameResult;
        console.log(`Frame ${frameId} result:`, result);
      }
    });

उदाहरण

सभी डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द करें

नीचे दिए गए स्निपेट में एक ऐसा फ़ंक्शन है जो उस एक्सटेंशन की ओर से पहले से रजिस्टर की गई सभी डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द कर देता है.

async function unregisterAllDynamicContentScripts() {
  try {
    const scripts = await chrome.scripting.getRegisteredContentScripts();
    const scriptIds = scripts.map(script => script.id);
    return chrome.scripting.unregisterContentScripts(scriptIds);
  } catch (error) {
    const message = [
      "An unexpected error occurred while",
      "unregistering dynamic content scripts.",
    ].join(" ");
    throw new Error(message, {cause : error});
  }
}

chrome.scripting API को इस्तेमाल करने के लिए, Chrome एक्सटेंशन सैंपल से डेटा स्टोर करने की जगह से, स्क्रिप्टिंग सैंपल इंस्टॉल करें.

टाइप

ContentScriptFilter

Chrome 96 के बाद के वर्शन

प्रॉपर्टी

  • ids

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

    अगर बताया गया है, तो getRegisteredContentScripts सिर्फ़ इस सूची में तय आईडी वाली स्क्रिप्ट दिखाएगा.

CSSInjection

प्रॉपर्टी

  • css

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

    इस स्ट्रिंग में इंजेक्ट करने के लिए, सीएसएस मौजूद है. files और css में से कोई एक बताना ज़रूरी है.

  • फ़ाइलें

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

    इंजेक्ट करने के लिए सीएसएस फ़ाइलों का पाथ. यह एक्सटेंशन की रूट डायरेक्ट्री से मेल खाता है. files और css में से कोई एक बताना ज़रूरी है.

  • origin

    StyleOrigin ज़रूरी नहीं है

    इंजेक्शन की स्टाइल ऑरिजिन. डिफ़ॉल्ट वैल्यू 'AUTHOR' होती है.

  • टारगेट

    उस टारगेट का ब्यौरा जिसमें सीएसएस को शामिल करना है.

ExecutionWorld

Chrome 95 के बाद के वर्शन

स्क्रिप्ट के लिए JavaScript की दुनिया जिसे काम करना है.

Enum

"ISOLATED"
अलग दुनिया के बारे में बताता है, जो इस एक्सटेंशन के लिए खास तौर पर एक्ज़ीक्यूशन एनवायरमेंट है.

"MAIN"
DOM की मुख्य दुनिया के बारे में बताता है, जो होस्ट पेज के JavaScript से शेयर किया गया एक्ज़ीक्यूशन एनवायरमेंट है.

InjectionResult

प्रॉपर्टी

  • documentId

    स्ट्रिंग

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

    इंजेक्शन से जुड़ा दस्तावेज़.

  • frameId

    नंबर

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

    इंजेक्शन से जुड़ा फ़्रेम.

  • नतीजा

    कोई ज़रूरी नहीं

    स्क्रिप्ट प्रोसेस होने से मिला नतीजा.

InjectionTarget

प्रॉपर्टी

  • allFrames

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

    स्क्रिप्ट को टैब में सभी फ़्रेम में इंजेक्ट करना चाहिए या नहीं. डिफ़ॉल्ट तौर पर, यह 'गलत' पर सेट होता है. अगर frameIds दिया गया है, तो यह सही नहीं होना चाहिए.

  • documentIds

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

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

    इंजेक्ट करने के लिए, खास documentId के आईडी. अगर frameIds सेट है, तो इसे सेट नहीं करना चाहिए.

  • frameIds

    नंबर[] ज़रूरी नहीं

    इंजेक्ट करने के लिए खास फ़्रेम के आईडी.

  • tabId

    नंबर

    उस टैब का आईडी जिसमें इंजेक्ट करना है.

RegisteredContentScript

Chrome 96 के बाद के वर्शन

प्रॉपर्टी

  • allFrames

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

    अगर इसे 'सही है' के तौर पर सेट किया गया है, तो इसे सभी फ़्रेम में इंजेक्ट किया जाएगा. भले ही, टैब में फ़्रेम सबसे ऊपर मौजूद फ़्रेम न हो. यूआरएल की ज़रूरी शर्तों के लिए, हर फ़्रेम की अलग से जांच की जाती है. अगर यूआरएल की ज़रूरी शर्तें पूरी नहीं होती हैं, तो इसे चाइल्ड फ़्रेम में नहीं डाला जाएगा. डिफ़ॉल्ट तौर पर, यह 'गलत' पर सेट होता है. इसका मतलब है कि सिर्फ़ टॉप फ़्रेम मैच करता है.

  • css

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

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

  • excludeMatches

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

    इसमें ऐसे पेज शामिल नहीं हैं जिनमें यह कॉन्टेंट स्क्रिप्ट, आम तौर पर इंजेक्ट की जाती है. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मिलते-जुलते पैटर्न देखें.

  • id

    स्ट्रिंग

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

  • js

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

    मिलते-जुलते पेजों में इंजेक्ट की जाने वाली JavaScript फ़ाइलों की सूची. इन्हें उसी क्रम में इंजेक्ट किया जाता है जिस क्रम में वे इस कलेक्शन में दिखते हैं.

  • matchOriginAsFallback

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

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

    इससे पता चलता है कि क्या स्क्रिप्ट को ऐसे फ़्रेम में डाला जा सकता है जहां यूआरएल के साथ काम न करने वाली स्कीम मौजूद हो; खास तौर पर: about:, data:, blob: या filesystem:. ऐसे मामलों में, यूआरएल के ऑरिजिन की जांच की जाती है, ताकि यह तय किया जा सके कि स्क्रिप्ट को इंजेक्ट किया जाना चाहिए या नहीं. अगर ऑरिजिन null है (जैसा कि डेटा के मामले में है: यूआरएल) तो इस्तेमाल किया गया ऑरिजिन या तो मौजूदा फ़्रेम बनाने वाला फ़्रेम होता है या वह फ़्रेम जिससे इस फ़्रेम पर नेविगेशन शुरू किया जाता है. ध्यान दें कि यह पैरंट फ़्रेम नहीं हो सकता.

  • मैच करता है

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

    इससे पता चलता है कि यह कॉन्टेंट स्क्रिप्ट किन पेजों पर इंजेक्ट की जाएगी. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मिलते-जुलते पैटर्न देखें. registerContentScripts के लिए तय होना चाहिए.

  • persistAcrossSessions

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

    इससे पता चलता है कि कॉन्टेंट स्क्रिप्ट आने वाले समय के सेशन में बनी रहेगी या नहीं. डिफ़ॉल्ट रूप से यह वैल्यू 'सही' पर सेट होती है.

  • runAt

    RunAt ज़रूरी नहीं

    इससे पता चलता है कि JavaScript फ़ाइलों को वेब पेज में कब इंजेक्ट किया जाता है. पसंदीदा और डिफ़ॉल्ट वैल्यू document_idle है.

  • दुनिया

    ExecutionWorld ज़रूरी नहीं है

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

    स्क्रिप्ट चलाने के लिए JavaScript "world". डिफ़ॉल्ट वैल्यू ISOLATED होती है.

ScriptInjection

प्रॉपर्टी

  • args

    कोई भी[] ज़रूरी नहीं

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

    दिए गए फ़ंक्शन को पास किए जाने वाले आर्ग्युमेंट. यह सिर्फ़ तब मान्य होता है, जब func पैरामीटर दिया गया हो. ये आर्ग्युमेंट, JSON क्रम के हिसाब से बनाए जा सकने वाले होने चाहिए.

  • फ़ाइलें

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

    इंजेक्ट करने के लिए, एक्सटेंशन की रूट डायरेक्ट्री से जुड़ी JS या सीएसएस फ़ाइलों का पाथ. files या func में से कोई एक बताना ज़रूरी है.

  • injectImmediately

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

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

    क्या टारगेट में इंजेक्शन को जल्द से जल्द ट्रिगर करना चाहिए. ध्यान दें, इस बात की कोई गारंटी नहीं है कि इंजेक्शन पेज लोड होने से पहले ही हो जाएगा, क्योंकि हो सकता है कि स्क्रिप्ट के टारगेट तक पहुंचने तक, पेज पहले ही लोड हो चुका हो.

  • टारगेट

    उस टारगेट के बारे में जानकारी जिसमें स्क्रिप्ट इंजेक्ट की जानी है.

  • दुनिया

    ExecutionWorld ज़रूरी नहीं है

    Chrome 95 के बाद के वर्शन

    स्क्रिप्ट चलाने के लिए JavaScript "world". डिफ़ॉल्ट वैल्यू ISOLATED होती है.

  • func

    अमान्य ज़रूरी नहीं

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

    इंजेक्ट करने के लिए JavaScript फ़ंक्शन. इस फ़ंक्शन को इंजेक्शन के लिए, क्रम से लगाया जाएगा और फिर इसे डीसीरियलाइज़ किया जाएगा. इसका मतलब है कि बाउंड पैरामीटर और उसे लागू करने का कॉन्टेक्स्ट हट जाएगा. files या func में से कोई एक बताना ज़रूरी है.

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

    ()=> {...}

StyleOrigin

स्टाइल बदलने का ऑरिजिन. ज़्यादा जानकारी के लिए स्टाइल ऑरिजिन देखें.

Enum

"AUTHOR"

"USER"

तरीके

executeScript()

वादा
chrome.scripting.executeScript(
  injection: ScriptInjection,
  callback?: function,
)

टारगेट कॉन्टेक्स्ट में स्क्रिप्ट इंजेक्ट करता है. डिफ़ॉल्ट रूप से, स्क्रिप्ट document_idle पर चलेगी या पेज पहले ही लोड हो जाने पर तुरंत चलेगी. अगर injectImmediately प्रॉपर्टी को सेट किया गया है, तो स्क्रिप्ट बिना इंतज़ार किए इंजेक्ट करेगी. भले ही, पेज पूरी तरह लोड न हुआ हो. अगर स्क्रिप्ट किसी प्रॉमिस का आकलन करती है, तो ब्राउज़र प्रॉमिस के निपटाने और नतीजे के तौर पर मिलने वाली वैल्यू का इंतज़ार करेगा.

पैरामीटर

  • इंजेक्शन

    इंजेक्ट करने वाली स्क्रिप्ट की जानकारी.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    (results: InjectionResult[])=>void

रिटर्न

  • Promise<InjectionResult[]>

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

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

getRegisteredContentScripts()

प्रॉमिस Chrome 96+
chrome.scripting.getRegisteredContentScripts(
  filter?: ContentScriptFilter,
  callback?: function,
)

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

पैरामीटर

  • फ़िल्‍टर

    ContentScriptFilter ज़रूरी नहीं

    एक्सटेंशन के डाइनैमिक तौर पर रजिस्टर की गई स्क्रिप्ट को फ़िल्टर करने वाला ऑब्जेक्ट.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    (scripts: RegisteredContentScript[])=>void

रिटर्न

  • प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

insertCSS()

वादा
chrome.scripting.insertCSS(
  injection: CSSInjection,
  callback?: function,
)

टारगेट कॉन्टेक्स्ट में सीएसएस स्टाइलशीट डालता है. अगर एक से ज़्यादा फ़्रेम के बारे में बताया गया हो, तो पूरे न हो पाने वाले इंजेक्शन को अनदेखा कर दिया जाता है.

पैरामीटर

  • इंजेक्शन

    शामिल की जाने वाली स्टाइल की जानकारी.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    ()=>void

रिटर्न

  • Promise<void>

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

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

registerContentScripts()

प्रॉमिस Chrome 96+
chrome.scripting.registerContentScripts(
  scripts: RegisteredContentScript[],
  callback?: function,
)

इस एक्सटेंशन के लिए एक या उससे ज़्यादा कॉन्टेंट स्क्रिप्ट रजिस्टर करता है.

पैरामीटर

  • स्क्रिप्ट

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

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    ()=>void

रिटर्न

  • Promise<void>

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

removeCSS()

प्रॉमिस Chrome 90+
chrome.scripting.removeCSS(
  injection: CSSInjection,
  callback?: function,
)

उस सीएसएस स्टाइलशीट को हटा देता है जिसे टारगेट के कॉन्टेक्स्ट से, इस एक्सटेंशन के ज़रिए पहले डाला गया था.

पैरामीटर

  • इंजेक्शन

    हटाई जाने वाली स्टाइल की जानकारी. ध्यान दें कि css, files, और origin प्रॉपर्टी, insertCSS के ज़रिए शामिल की गई स्टाइलशीट से पूरी तरह मेल खानी चाहिए. किसी गैर-मौजूद स्टाइलशीट को निकालने का प्रयास करना कोई समाधान नहीं है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    ()=>void

रिटर्न

  • Promise<void>

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

unregisterContentScripts()

प्रॉमिस Chrome 96+
chrome.scripting.unregisterContentScripts(
  filter?: ContentScriptFilter,
  callback?: function,
)

इस एक्सटेंशन के लिए कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द करता है.

पैरामीटर

  • फ़िल्‍टर

    ContentScriptFilter ज़रूरी नहीं

    बताए जाने पर, सिर्फ़ फ़िल्टर से मेल खाने वाली डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द करता है. ऐसा नहीं होने पर, एक्सटेंशन की सभी डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द कर दिया जाता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    ()=>void

रिटर्न

  • Promise<void>

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

updateContentScripts()

प्रॉमिस Chrome 96+
chrome.scripting.updateContentScripts(
  scripts: RegisteredContentScript[],
  callback?: function,
)

इस एक्सटेंशन के लिए एक या उससे ज़्यादा कॉन्टेंट स्क्रिप्ट अपडेट करता है.

पैरामीटर

  • स्क्रिप्ट

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

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    ()=>void

रिटर्न

  • Promise<void>

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.