2010-05-07 21 views
5

पर तत्व डालें जब साइटें आपको उस वेबसाइट पर डालने वाली कुछ जावास्क्रिप्ट देती हैं, जिसे आप उस स्थिति में सम्मिलित करने के लिए वेब पेज में पेस्ट करते हैं, तो स्क्रिप्ट डीओएम में अपनी वर्तमान स्थिति कैसे निर्धारित करती है? Document.write का उपयोग किए बिना?<script> टैग स्थिति

धन्यवाद,

निक

+1

क्या आपके पास ऐसा उदाहरण है जहां यह किया जा रहा है? –

उत्तर

5

स्क्रिप्ट समावेशन समय पर, यह निश्चित है कि पृष्ठ में अंतिम <script> वर्तमान वाला होगा; शेष पृष्ठ को अभी तक पार्स नहीं किया गया है। तो:

<script type="text/javascript"> 
    var scripts= document.getElementsByTagName('script'); 
    var this_script= scripts[scripts.length-1]; 

    // Something that happens later... 
    // 
    setTimeout(function() { 
     var div= document.createElement('div'); 
     div.appendChild(document.createTextNode('Hello!')); 
     this_script.parentNode.insertBefore(div, this_script); 
    }, 5000); 
</script> 

यह रूप में लंबे समय सच है स्क्रिप्ट टैग defer का उपयोग के रूप में नहीं है, या एचटीएमएल 5 के async

+0

यह एहसास नहीं हुआ कि यह इस तरह से काम करेगा, लेकिन सही समझ में आता है, धन्यवाद! –

0

क्यों इस तरह के स्क्रिप्ट डोम में उनके स्थान के बारे में परवाह होगा मैं देख रहा हूँ नहीं है, लेकिन मुझे लगता है कि यह निर्धारित करने के लिए संभव है। शायद अपनी खोज शुरू करने के लिए document.scripts जैसे कुछ का उपयोग करें।

+0

मुझे मोज़िला संदर्भ में document.scripts नहीं दिखाई देता है: https://developer.mozilla.org/en/DOM/document तो मुझे लगता है कि यह केवल एक आईई-चीज है? हालांकि गलत हो सकता है, मैं क्रोम चला रहा हूं और जांच की तरह महसूस नहीं करता! :) हालांकि धन्यवाद। –

+0

यह आईई एक्सटेंशन वापस रास्ते से है, यह वेबकिट और ओपेरा पर भी उपलब्ध है। यद्यपि यह आपको कुछ भी नहीं देता है जो 'getElementsByTagName' पहले से नहीं करता है, यह वास्तव में बहुत अधिक उपयोग नहीं देखा जाता है। – bobince