वर्तमान स्क्रिप्ट तत्व कैसे प्राप्त करें:
1. उपयोग document.currentScript
document.currentScriptवह <script>तत्व लौटाएगा जिसकी स्क्रिप्ट वर्तमान में संसाधित की जा रही है।
<script>
var me = document.currentScript;
</script>
लाभ
- सरल और स्पष्ट। विश्वसनीय।
- स्क्रिप्ट टैग को संशोधित करने की आवश्यकता नहीं है
- अतुल्यकालिक स्क्रिप्ट के साथ काम करता है (
deferऔर async)
- स्क्रिप्ट के साथ काम करता है गतिशील रूप से डाला
समस्या
- पुराने ब्राउज़र और IE में काम नहीं करेगा।
- मॉड्यूल के साथ काम नहीं करता है
<script type="module">
2. आईडी द्वारा स्क्रिप्ट का चयन करें
स्क्रिप्ट को एक आईडी विशेषता देते हुए आप आसानी से उपयोग करके इसे आईडी द्वारा चुन सकते हैं document.getElementById()।
<script id="myscript">
var me = document.getElementById('myscript');
</script>
लाभ
- सरल और स्पष्ट। विश्वसनीय।
- लगभग सार्वभौमिक रूप से समर्थित
- अतुल्यकालिक स्क्रिप्ट के साथ काम करता है (
deferऔर async)
- स्क्रिप्ट के साथ काम करता है गतिशील रूप से डाला
समस्या
- स्क्रिप्ट टैग में एक कस्टम विशेषता जोड़ने की आवश्यकता है
id कुछ ब्राउज़रों के लिए कुछ ब्राउज़रों में स्क्रिप्ट के लिए अजीब व्यवहार का कारण हो सकता है
3. एक data-*विशेषता का उपयोग करके स्क्रिप्ट का चयन करें
स्क्रिप्ट को एक data-*विशेषता देते हुए आप आसानी से इसे भीतर से चुन सकेंगे।
<script data-name="myscript">
var me = document.querySelector('script[data-name="myscript"]');
</script>
पिछले विकल्प की तुलना में इसके कुछ लाभ हैं।
लाभ
- सरल और स्पष्ट।
- अतुल्यकालिक स्क्रिप्ट के साथ काम करता है (
deferऔर async)
- स्क्रिप्ट के साथ काम करता है गतिशील रूप से डाला
समस्या
- स्क्रिप्ट टैग में एक कस्टम विशेषता जोड़ने की आवश्यकता है
- HTML5, और
querySelector()सभी ब्राउज़रों में अनुरूप नहीं है
idविशेषता का उपयोग करने की तुलना में कम व्यापक रूप से समर्थित
- किनारे के मामलों के
<script>साथ मिलेगा id।
- यदि किसी अन्य तत्व में पृष्ठ पर समान डेटा विशेषता और मान है तो भ्रमित हो सकते हैं।
4. src द्वारा स्क्रिप्ट का चयन करें
डेटा विशेषताओं का उपयोग करने के बजाय, आप स्रोत द्वारा स्क्रिप्ट चुनने के लिए चयनकर्ता का उपयोग कर सकते हैं:
<script src="//example.com/embed.js"></script>
एम्बेड में:
var me = document.querySelector('script[src="//example.com/embed.js"]');
लाभ
- विश्वसनीय
- अतुल्यकालिक स्क्रिप्ट के साथ काम करता है (
deferऔर async)
- स्क्रिप्ट के साथ काम करता है गतिशील रूप से डाला
- कोई कस्टम विशेषताएँ या आईडी की आवश्यकता नहीं है
समस्या
- स्थानीय स्क्रिप्ट के लिए काम नहीं करता है
- विभिन्न वातावरणों में समस्याएं पैदा करेगा, जैसे विकास और उत्पादन
- स्थिर और नाजुक। स्क्रिप्ट फ़ाइल का स्थान बदलने के लिए स्क्रिप्ट को संशोधित करना होगा
idविशेषता का उपयोग करने की तुलना में कम व्यापक रूप से समर्थित
- यदि आप एक ही स्क्रिप्ट को दो बार लोड करते हैं तो समस्याएँ उत्पन्न होंगी
5. जो आप चाहते हैं उसे खोजने के लिए सभी लिपियों पर लूप करें
हम प्रत्येक स्क्रिप्ट तत्व पर भी लूप कर सकते हैं और हम जो चाहें उसका चयन करने के लिए व्यक्तिगत रूप से जाँच सकते हैं:
<script>
var me = null;
var scripts = document.getElementsByTagName("script")
for (var i = 0; i < scripts.length; ++i) {
if( isMe(scripts[i])){
me = scripts[i];
}
}
</script>
यह हमें पुराने ब्राउज़रों में दोनों पिछली तकनीकों का उपयोग करने देता है जो querySelector()विशेषताओं के साथ अच्छी तरह से समर्थन नहीं करते हैं । उदाहरण के लिए:
function isMe(scriptElem){
return scriptElem.getAttribute('src') === "//example.com/embed.js";
}
यह जो भी दृष्टिकोण लिया गया है, उसके लाभों और समस्याओं को विरासत में मिला है, लेकिन इस पर भरोसा नहीं करता है कि querySelector()पुराने ब्राउज़रों में काम करेगा।
6. अंतिम निष्पादित स्क्रिप्ट प्राप्त करें
चूंकि लिपियों को क्रमिक रूप से निष्पादित किया जाता है, अंतिम स्क्रिप्ट तत्व अक्सर वर्तमान में चल रही स्क्रिप्ट होगी:
<script>
var scripts = document.getElementsByTagName( 'script' );
var me = scripts[ scripts.length - 1 ];
</script>
लाभ
- सरल।
- लगभग सार्वभौमिक रूप से समर्थित
- कोई कस्टम विशेषताएँ या आईडी की आवश्यकता नहीं है
समस्या
- अतुल्यकालिक स्क्रिप्ट ( & ) के साथ काम नहीं करता है
deferasync
- गतिशील रूप से सम्मिलित स्क्रिप्ट के साथ काम नहीं करता है