2010-05-07 2 views
5

Quando i siti forniscono JavaScript che si incollano in una pagina Web per inserire il contenuto in quella posizione, in che modo lo script determina la posizione corrente nel DOM? Senza usare document.write?Elementi di inserimento a <script> posizione tag

Grazie,

Nick

+1

Avete un esempio di dove è stato fatto? –

risposta

5

Al momento dell'inclusione dello script, è certo che l'ultimo <script> nella pagina sarà quello corrente; il resto della pagina non è ancora stato analizzato. Quindi:

<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> 

Questo è vero fino a quando il tag script non usa defer, o HTML5 di async.

+0

Non sapevo che avrebbe funzionato in quel modo, ma ha perfettamente senso, grazie! –

0

non vedo il motivo per cui tali script sarebbero cuore la loro posizione nel DOM, ma credo che sia possibile determinare. Forse usare qualcosa come document.scripts per iniziare la ricerca.

+0

Non vedo document.scripts nel riferimento Mozilla: https://developer.mozilla.org/en/DOM/document Quindi immagino che sia una cosa solo IE? Potrebbe essere sbagliato però, sto eseguendo Chrome e non ho voglia di controllare! :) Grazie comunque. –

+0

È un'estensione IE di ritorno, disponibile anche su WebKit e Opera. Anche se non ti dà nulla che 'getElementsByTagName' non sia già in grado di fare, non è mai visto molto. – bobince