ब्यौरा
अलग-अलग कॉन्टेक्स्ट में स्क्रिप्ट को चलाने के लिए, chrome.scripting एपीआई का इस्तेमाल करें.
अनुमतियां
scriptingउपलब्धता
मेनिफ़ेस्ट
browser.scripting एपीआई का इस्तेमाल करने के लिए, मेनिफ़ेस्ट में "scripting" अनुमति का एलान करें. साथ ही, उन पेजों के लिए होस्ट करने की अनुमतियां दें जिनमें स्क्रिप्ट इंजेक्ट करनी हैं. "host_permissions" बटन या "activeTab" अनुमति का इस्तेमाल करें. इससे कुछ समय के लिए होस्ट की अनुमतियां मिलती हैं. नीचे दिए गए उदाहरण में, activeTab अनुमति का इस्तेमाल किया गया है.
{
"name": "Scripting Extension",
"manifest_version": 3,
"permissions": ["scripting", "activeTab"],
...
}
कॉन्सेप्ट और इस्तेमाल
वेबसाइटों में JavaScript और सीएसएस को इंजेक्ट करने के लिए, browser.scripting एपीआई का इस्तेमाल किया जा सकता है. यह कॉन्टेंट स्क्रिप्ट की मदद से किए जा सकने वाले काम जैसा ही है. हालांकि, browser.scripting नेमस्पेस का इस्तेमाल करके, एक्सटेंशन रनटाइम के दौरान फ़ैसले ले सकते हैं.
इंजेक्शन टारगेट
target पैरामीटर का इस्तेमाल करके, यह तय किया जा सकता है कि JavaScript या सीएसएस को किस टारगेट में इंजेक्ट करना है.
सिर्फ़ tabId फ़ील्ड भरना ज़रूरी है. डिफ़ॉल्ट रूप से, इंजेक्शन चुने गए टैब के मुख्य फ़्रेम में चलेगा.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId()},
files : [ "script.js" ],
})
.then(() => console.log("script injected"));
तय किए गए टैब के सभी फ़्रेम में चलाने के लिए, allFrames बूलियन को true पर सेट किया जा सकता है.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId(), allFrames : true},
files : [ "script.js" ],
})
.then(() => console.log("script injected in all frames"));
अलग-अलग फ़्रेम आईडी की जानकारी देकर, किसी टैब के खास फ़्रेम में भी इंजेक्ट किया जा सकता है. फ़्रेम आईडी के बारे में ज़्यादा जानकारी के लिए, browser.webNavigation
एपीआई देखें.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId(), frameIds : [ frameId1, frameId2 ]},
files : [ "script.js" ],
})
.then(() => console.log("script injected on target frames"));
इंजेक्ट किया गया कोड
एक्सटेंशन, इंजेक्ट किए जाने वाले कोड को किसी बाहरी फ़ाइल या रनटाइम वैरिएबल के ज़रिए तय कर सकते हैं.
फ़ाइलें
फ़ाइलों को स्ट्रिंग के तौर पर तय किया जाता है. ये स्ट्रिंग, एक्सटेंशन की रूट डायरेक्ट्री के पाथ होते हैं. यह कोड, फ़ाइल script.js को टैब के मुख्य फ़्रेम में इंजेक्ट करेगा.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId()},
files : [ "script.js" ],
})
.then(() => console.log("injected script file"));
रनटाइम फ़ंक्शन
scripting.executeScript() का इस्तेमाल करके JavaScript इंजेक्ट करते समय, किसी फ़ाइल के बजाय, एक्ज़ीक्यूट किए जाने वाले फ़ंक्शन के बारे में बताया जा सकता है. यह फ़ंक्शन, मौजूदा एक्सटेंशन के कॉन्टेक्स्ट के लिए उपलब्ध फ़ंक्शन वैरिएबल होना चाहिए.
function getTabId() { ... }
function getTitle() { return document.title; }
browser.scripting
.executeScript({
target : {tabId : getTabId()},
func : getTitle,
})
.then(() => console.log("injected a function"));
function getTabId() { ... }
function getUserColor() { ... }
function changeBackgroundColor() {
document.body.style.backgroundColor = getUserColor();
}
browser.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;
}
browser.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; }";
browser.scripting
.insertCSS({
target : {tabId : getTabId()},
css : css,
})
.then(() => console.log("CSS injected"));
नतीजों को मैनेज करना
JavaScript को चलाने के नतीजे, एक्सटेंशन को पास किए जाते हैं. हर फ़्रेम में एक नतीजा शामिल होता है. इस बात की गारंटी है कि मुख्य फ़्रेम, नतीजे के तौर पर मिलने वाले कलेक्शन में पहला इंडेक्स होगा. अन्य सभी फ़्रेम, किसी तय क्रम में नहीं होते.
function getTabId() { ... }
function getTitle() { return document.title; }
browser.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;
}
browser.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 browser.scripting.getRegisteredContentScripts();
const scriptIds = scripts.map(script => script.id);
return browser.scripting.unregisterContentScripts({ ids: scriptIds });
} catch (error) {
const message = [
"An unexpected error occurred while",
"unregistering dynamic content scripts.",
].join(" ");
throw new Error(message, {cause : error});
}
}
browser.scripting एपीआई को आज़माने के लिए, Chrome एक्सटेंशन के सैंपल रिपॉज़िटरी से स्क्रिप्टिंग सैंपल इंस्टॉल करें.
टाइप
ContentScriptFilter
प्रॉपर्टी
-
आईडी
string[] ज़रूरी नहीं
अगर
getRegisteredContentScriptsकी वैल्यू दी गई है, तो यह सिर्फ़ उन स्क्रिप्ट को दिखाएगा जिनका आईडी इस सूची में दिया गया है.
CSSInjection
प्रॉपर्टी
-
css
string ज़रूरी नहीं
इंजेक्ट करने के लिए सीएसएस वाली स्ट्रिंग.
filesऔरcssमें से किसी एक की जानकारी देना ज़रूरी है. -
फ़ाइलें
string[] ज़रूरी नहीं
इंजेक्ट की जाने वाली सीएसएस फ़ाइलों का पाथ, एक्सटेंशन की रूट डायरेक्ट्री के हिसाब से होता है.
filesऔरcssमें से किसी एक की जानकारी देना ज़रूरी है. -
origin
StyleOrigin ज़रूरी नहीं है
इंजेक्शन के लिए स्टाइल ऑरिजिन. डिफ़ॉल्ट रूप से, यह
'AUTHOR'पर सेट होता है. -
टारगेट
उस टारगेट की जानकारी जिसमें सीएसएस को शामिल करना है.
ExecutionWorld
JavaScript वर्ल्ड, जिसमें स्क्रिप्ट को चलाया जाता है.
Enum
"ISOLATED"
इससे, अलग-थलग दुनिया के बारे में पता चलता है. यह इस एक्सटेंशन के लिए, यूनीक एक्ज़ीक्यूशन एनवायरमेंट है.
"MAIN"
यह डीओएम की मुख्य दुनिया के बारे में बताता है. यह वह एक्ज़ीक्यूशन एनवायरमेंट है जिसे होस्ट पेज के JavaScript के साथ शेयर किया जाता है.
InjectionResult
प्रॉपर्टी
-
documentId
स्ट्रिंग
Chrome 106 और इसके बाद के वर्शन Chrome 148 से browser.*इंजेक्शन से जुड़ा दस्तावेज़.
-
frameId
संख्या
Chrome 90+ browser.* Chrome 148 सेइंजेक्शन से जुड़ा फ़्रेम.
-
नतीजा
ज़रूरी नहीं
स्क्रिप्ट रन करने का नतीजा.
InjectionTarget
प्रॉपर्टी
-
allFrames
बूलियन ज़रूरी नहीं
चुनें कि स्क्रिप्ट को टैब के सभी फ़्रेम में इंजेक्ट किया जाना चाहिए या नहीं. डिफ़ॉल्ट तौर पर, यह 'गलत' पर सेट होती है. अगर
frameIdsकी वैल्यू दी गई है, तो यह वैल्यू 'सही' नहीं होनी चाहिए. -
documentIds
string[] ज़रूरी नहीं
Chrome 106 और इसके बाद के वर्शन Chrome 148 से browser.*उन documentIds के आईडी जिनमें इंजेक्ट करना है. अगर
frameIdsसेट है, तो इसे सेट नहीं किया जाना चाहिए. -
frameIds
number[] ज़रूरी नहीं
उन फ़्रेम के आईडी जिनमें स्क्रिप्ट इंजेक्ट करनी है.
-
tabId
संख्या
उस टैब का आईडी जिसमें स्क्रिप्ट इंजेक्ट करनी है.
RegisteredContentScript
प्रॉपर्टी
-
allFrames
बूलियन ज़रूरी नहीं
अगर इसे 'सही' के तौर पर सेट किया जाता है, तो यह सभी फ़्रेम में इंजेक्ट हो जाएगा. भले ही, फ़्रेम टैब में सबसे ऊपर मौजूद फ़्रेम न हो. यूआरएल के लिए ज़रूरी शर्तों के लिए, हर फ़्रेम की अलग से जांच की जाती है. अगर यूआरएल के लिए ज़रूरी शर्तें पूरी नहीं होती हैं, तो यह चाइल्ड फ़्रेम में इंजेक्ट नहीं होगा. डिफ़ॉल्ट रूप से, यह वैल्यू false पर सेट होती है. इसका मतलब है कि सिर्फ़ टॉप फ़्रेम को मैच किया जाता है.
-
css
string[] ज़रूरी नहीं
मैच करने वाले पेजों में इंजेक्ट की जाने वाली सीएसएस फ़ाइलों की सूची. इन्हें इस कलेक्शन में दिखने के क्रम में इंजेक्ट किया जाता है. ऐसा पेज के लिए कोई डीओएम बनाने या दिखाने से पहले किया जाता है.
-
excludeMatches
string[] ज़रूरी नहीं
यह उन पेजों को बाहर रखता है जिनमें यह कॉन्टेंट स्क्रिप्ट इंजेक्ट की जाती. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मैच पैटर्न देखें.
-
आईडी
स्ट्रिंग
एपीआई कॉल में बताई गई कॉन्टेंट स्क्रिप्ट का आईडी. यह '_' से शुरू नहीं होना चाहिए, क्योंकि इसे जनरेट किए गए स्क्रिप्ट आईडी के प्रीफ़िक्स के तौर पर रिज़र्व किया गया है.
-
js
string[] ज़रूरी नहीं
यह JavaScript फ़ाइलों की सूची है, जिन्हें मैच होने वाले पेजों में इंजेक्ट किया जाना है. इन्हें उसी क्रम में इंजेक्ट किया जाता है जिस क्रम में ये इस कलेक्शन में दिखते हैं.
-
matchOriginAsFallback
बूलियन ज़रूरी नहीं
Chrome 119 और इसके बाद के वर्शन Chrome 148 के बाद से browser.*इससे पता चलता है कि स्क्रिप्ट को उन फ़्रेम में इंजेक्ट किया जा सकता है या नहीं जिनमें यूआरएल में ऐसी स्कीम शामिल है जो काम नहीं करती. खास तौर पर: about:, data:, blob: या filesystem:. ऐसे मामलों में, यूआरएल के ऑरिजिन की जांच की जाती है, ताकि यह तय किया जा सके कि स्क्रिप्ट को इंजेक्ट किया जाना चाहिए या नहीं. अगर ऑरिजिन
nullहै (जैसा कि डेटा: यूआरएल के मामले में होता है), तो इस्तेमाल किया गया ऑरिजिन वह फ़्रेम होता है जिसने मौजूदा फ़्रेम बनाया है या वह फ़्रेम होता है जिसने इस फ़्रेम पर नेविगेशन शुरू किया है. ध्यान दें कि हो सकता है कि यह पैरंट फ़्रेम न हो. -
मैच
string[] ज़रूरी नहीं
इससे पता चलता है कि इस कॉन्टेंट स्क्रिप्ट को किन पेजों में इंजेक्ट किया जाएगा. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मैच पैटर्न देखें.
registerContentScriptsके लिए, यह जानकारी देना ज़रूरी है. -
persistAcrossSessions
बूलियन ज़रूरी नहीं
इससे पता चलता है कि यह कॉन्टेंट स्क्रिप्ट, आने वाले सेशन में बनी रहेगी या नहीं. डिफ़ॉल्ट रूप से, यह true पर सेट होता है.
-
runAt
RunAt ज़रूरी नहीं है
इससे यह तय होता है कि वेब पेज में JavaScript फ़ाइलें कब इंजेक्ट की जाएंगी. पसंदीदा और डिफ़ॉल्ट वैल्यू
document_idleहै. -
दुनिया
ExecutionWorld ज़रूरी नहीं
Chrome 102+ browser.* Chrome 148 सेस्क्रिप्ट को चलाने के लिए, JavaScript "वर्ल्ड". डिफ़ॉल्ट रूप से, यह
ISOLATEDपर सेट होता है.
ScriptInjection
प्रॉपर्टी
-
args
any[] ज़रूरी नहीं
Chrome 92+ browser.* Chrome 148 सेदिए गए फ़ंक्शन को पास करने के लिए आर्ग्युमेंट. यह सिर्फ़ तब मान्य होता है, जब
funcपैरामीटर की वैल्यू दी गई हो. ये आर्ग्युमेंट, JSON-सीरियलाइज़ेबल होने चाहिए. -
फ़ाइलें
string[] ज़रूरी नहीं
इंजेक्ट की जाने वाली JS या सीएसएस फ़ाइलों का पाथ, एक्सटेंशन की रूट डायरेक्ट्री के हिसाब से होता है.
filesयाfuncमें से कोई एक वैल्यू दी जानी चाहिए. -
injectImmediately
बूलियन ज़रूरी नहीं
Chrome 102+ browser.* Chrome 148 सेक्या टारगेट में इंजेक्शन को जल्द से जल्द ट्रिगर किया जाना चाहिए. ध्यान दें कि इस बात की कोई गारंटी नहीं है कि पेज लोड होने से पहले स्क्रिप्ट इंजेक्ट हो जाएगी. ऐसा इसलिए, क्योंकि स्क्रिप्ट के टारगेट तक पहुंचने से पहले ही पेज लोड हो सकता है.
-
टारगेट
उस टारगेट की जानकारी जिसमें स्क्रिप्ट को इंजेक्ट करना है.
-
दुनिया
ExecutionWorld ज़रूरी नहीं
Chrome 95+ browser.* Chrome 148 सेस्क्रिप्ट को चलाने के लिए, JavaScript "वर्ल्ड". डिफ़ॉल्ट रूप से, यह
ISOLATEDपर सेट होता है. -
func
void ज़रूरी नहीं
Chrome 92+ browser.* Chrome 148 सेइंजेक्ट करने के लिए JavaScript फ़ंक्शन. इस फ़ंक्शन को सीरियलाइज़ किया जाएगा. इसके बाद, इंजेक्शन के लिए डीसीरियलाइज़ किया जाएगा. इसका मतलब है कि बाउंड किए गए सभी पैरामीटर और एक्ज़ीक्यूशन कॉन्टेक्स्ट मिट जाएंगे.
filesयाfuncमें से कोई एक वैल्यू दी जानी चाहिए.funcफ़ंक्शन इस तरह दिखता है:() => {...}
StyleOrigin
स्टाइल में बदलाव करने का ऑरिजिन. ज़्यादा जानकारी के लिए, स्टाइल की शुरुआत देखें.
Enum
"AUTHOR"
"USER"
तरीके
executeScript()
browser.scripting.executeScript(
injection: ScriptInjection,
): Promise<InjectionResult[]>
टारगेट कॉन्टेक्स्ट में कोई स्क्रिप्ट इंजेक्ट करने की अनुमति. डिफ़ॉल्ट रूप से, स्क्रिप्ट document_idle पर चलेगी. अगर पेज पहले ही लोड हो चुका है, तो स्क्रिप्ट तुरंत चलेगी. अगर injectImmediately प्रॉपर्टी सेट है, तो स्क्रिप्ट बिना इंतज़ार किए इंजेक्ट हो जाएगी. भले ही, पेज लोड होना पूरा न हुआ हो. अगर स्क्रिप्ट का आकलन प्रॉमिस के तौर पर किया जाता है, तो ब्राउज़र प्रॉमिस के सेटल होने का इंतज़ार करेगा और नतीजे के तौर पर मिली वैल्यू दिखाएगा.
पैरामीटर
-
इंजेक्शन
इंजेक्ट की जाने वाली स्क्रिप्ट की जानकारी.
रिटर्न
-
<InjectionResult[]> का प्रॉमिस
Chrome 90+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो इंजेक्शन पूरा होने पर रिज़ॉल्व हो जाता है. नतीजे के तौर पर मिलने वाले कलेक्शन में, हर उस फ़्रेम के लिए कोड को लागू करने का नतीजा शामिल होता है जिसमें इंजेक्शन सफल रहा.
getRegisteredContentScripts()
browser.scripting.getRegisteredContentScripts(
filter?: ContentScriptFilter,
): Promise<RegisteredContentScript[]>
यह फ़ंक्शन, इस एक्सटेंशन के लिए डाइनैमिक तौर पर रजिस्टर की गई उन सभी कॉन्टेंट स्क्रिप्ट को दिखाता है जो दिए गए फ़िल्टर से मैच करती हैं.
पैरामीटर
-
फ़िल्टर
ContentScriptFilter ज़रूरी नहीं
एक्सटेंशन की डाइनैमिक तौर पर रजिस्टर की गई स्क्रिप्ट को फ़िल्टर करने के लिए ऑब्जेक्ट.
रिटर्न
-
Promise<RegisteredContentScript[]>
insertCSS()
browser.scripting.insertCSS(
injection: CSSInjection,
): Promise<void>
यह टारगेट कॉन्टेक्स्ट में सीएसएस स्टाइलशीट शामिल करता है. अगर एक से ज़्यादा फ़्रेम तय किए गए हैं, तो असफल इंजेक्शन को अनदेखा कर दिया जाता है.
पैरामीटर
-
इंजेक्शन
इंसर्ट की जाने वाली स्टाइल की जानकारी.
रिटर्न
-
वादा<शून्य>
Chrome 90+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो इंसर्ट करने की प्रोसेस पूरी होने पर रिज़ॉल्व हो जाता है.
registerContentScripts()
browser.scripting.registerContentScripts(
scripts: RegisteredContentScript[],
): Promise<void>
इस एक्सटेंशन के लिए, एक या उससे ज़्यादा कॉन्टेंट स्क्रिप्ट रजिस्टर करता है.
पैरामीटर
-
स्क्रिप्ट
इसमें रजिस्टर की जाने वाली स्क्रिप्ट की सूची होती है. अगर स्क्रिप्ट को पार्स करने/फ़ाइल की पुष्टि करने के दौरान गड़बड़ियां होती हैं या दिए गए आईडी पहले से मौजूद हैं, तो कोई भी स्क्रिप्ट रजिस्टर नहीं की जाती.
रिटर्न
-
वादा<शून्य>
यह एक प्रॉमिस दिखाता है, जो स्क्रिप्ट के पूरी तरह से रजिस्टर होने के बाद रिज़ॉल्व हो जाता है. अगर कोई गड़बड़ी होती है, तो यह प्रॉमिस रिजेक्ट हो जाता है.
removeCSS()
browser.scripting.removeCSS(
injection: CSSInjection,
): Promise<void>
यह एक्सटेंशन, टारगेट कॉन्टेक्स्ट से उस सीएसएस स्टाइलशीट को हटा देता है जिसे पहले इसी एक्सटेंशन ने डाला था.
पैरामीटर
-
इंजेक्शन
हटाए जाने वाले स्टाइल की जानकारी. ध्यान दें कि
css,files, औरoriginप्रॉपर्टी,insertCSSकी मदद से डाली गई स्टाइलशीट से पूरी तरह मैच होनी चाहिए. अगर किसी ऐसी स्टाइलशीट को हटाने की कोशिश की जाती है जो मौजूद नहीं है, तो कोई कार्रवाई नहीं की जाती.
रिटर्न
-
वादा<शून्य>
यह एक प्रॉमिस दिखाता है, जो हटाने की प्रोसेस पूरी होने पर रिज़ॉल्व हो जाता है.
unregisterContentScripts()
browser.scripting.unregisterContentScripts(
filter?: ContentScriptFilter,
): Promise<void>
इस एक्सटेंशन के लिए, कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द करता है.
पैरामीटर
-
फ़िल्टर
ContentScriptFilter ज़रूरी नहीं
अगर फ़िल्टर की जानकारी दी गई है, तो यह सिर्फ़ उन डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द करता है जो फ़िल्टर से मैच करती हैं. ऐसा न करने पर, एक्सटेंशन की डाइनैमिक कॉन्टेंट स्क्रिप्ट का रजिस्ट्रेशन रद्द कर दिया जाता है.
रिटर्न
-
वादा<शून्य>
यह एक प्रॉमिस दिखाता है, जो स्क्रिप्ट का रजिस्ट्रेशन रद्द होने पर रिज़ॉल्व हो जाता है. इसके अलावा, अगर कोई गड़बड़ी होती है, तो यह प्रॉमिस रिजेक्ट हो जाता है.
updateContentScripts()
browser.scripting.updateContentScripts(
scripts: RegisteredContentScript[],
): Promise<void>
इस एक्सटेंशन के लिए, एक या उससे ज़्यादा कॉन्टेंट स्क्रिप्ट अपडेट करता है.
पैरामीटर
-
स्क्रिप्ट
इसमें अपडेट की जाने वाली स्क्रिप्ट की सूची होती है. अगर किसी प्रॉपर्टी को इस ऑब्जेक्ट में शामिल किया जाता है, तो उसे सिर्फ़ मौजूदा स्क्रिप्ट के लिए अपडेट किया जाता है. अगर स्क्रिप्ट को पार्स करने या फ़ाइल की पुष्टि करने के दौरान गड़बड़ियां होती हैं या दिए गए आईडी, पूरी तरह से रजिस्टर की गई स्क्रिप्ट से मेल नहीं खाते हैं, तो कोई भी स्क्रिप्ट अपडेट नहीं की जाती.
रिटर्न
-
वादा<शून्य>
यह एक प्रॉमिस दिखाता है, जो स्क्रिप्ट अपडेट होने के बाद रिज़ॉल्व हो जाता है. अगर कोई गड़बड़ी होती है, तो यह प्रॉमिस रिजेक्ट हो जाता है.