यदि आप 2020 में इस पोस्ट को पढ़ रहे हैं, तो शायद आप वादों के लिए अधिक उपयोग किए जाते हैं। एक अधिक आधुनिक दृष्टिकोण बेहतर है यदि आपके सभी लक्ष्य ब्राउज़र ES6 का समर्थन करते हैं या आप एक पॉलीफ़िल का उपयोग कर रहे हैं।
यह समाधान @JaykeshPatel उत्तर की तरह काम करता है , लेकिन यह Promises पर आधारित है :
function loadScript(scriptUrl) {
const script = document.createElement('script');
script.src = scriptUrl;
document.body.appendChild(script);
return new Promise((res, rej) => {
script.onload = function() {
res();
}
script.onerror = function () {
rej();
}
});
}
loadScript('http://your-cdn/jquery.js')
.then(() => {
console.log('Script loaded!');
})
.catch(() => {
console.error('Script loading failed! Handle this error');
});
आप resकॉलबैक के तर्कों में कुछ प्रासंगिक चर पास कर सकते हैं , या यदि आपका पुस्तकालय कुछ वैश्विक प्रतीक आयात करता है, तो आप इसे वहां संदर्भित कर सकते हैं।
उदाहरण के लिए, चूंकि jQuery $वैश्विक प्रतीक का परिचय देता है , आप इसके res($)लिए एक स्थानीय गुंजाइश बना सकते हैं और बना सकते हैं (एकदम सही यदि आप टाइपस्क्रिप्ट का उपयोग कर रहे हैं और आप प्रत्येक फ़ाइल में एक मॉड्यूल चर घोषित नहीं करना चाहते हैं, इस तरह से आप लिख सकते हैं const $ = await loadScript(..))।
यदि आपको किसी तर्क को पारित करने का मतलब नहीं है, तो आप अपने कोड को इस तरह छोटा कर सकते हैं:
script.onload = res;
script.onerror = rej;
onloadIE संस्करण 9 के लिए ठीक है और बाद में - तो बस सेटिंगonloadअब शायद ज्यादातर लोगों के लिए ठीक है