2010-05-07 4 views
5

Wenn Sites Ihnen JavaScript geben, das Sie in eine Webseite einfügen, um Inhalt an dieser Position einzufügen, wie ermittelt das Skript dann seine aktuelle Position im DOM? Ohne document.write zu verwenden?Einfügen von Elementen unter <script> Tag-Position

Danke,

Nick

+1

Haben Sie ein Beispiel, wo das gemacht wird? –

Antwort

5

Bei der Skripteinschlusszeit ist es sicher, dass die letzte <script> auf der Seite die aktuelle ist; Der Rest der Seite wurde noch nicht analysiert. Also:

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

Dies gilt so lange, wie der Skript-Tag nicht defer oder HTML5 ist async.

+0

Ist mir nicht klar, dass es so funktionieren würde, aber macht Sinn, danke! –

0

Ich sehe nicht, warum solche Skripte über ihre Lage im DOM kümmern würde, aber ich denke, es möglich ist, zu bestimmen. Vielleicht verwenden Sie etwas wie document.scripts, um Ihre Suche zu starten.

+0

Ich sehe nicht die document.scripts in der Mozilla-Referenz: https://developer.mozilla.org/en/DOM/document Also ich denke, das ist ein IE-nur etwas? Könnte aber falsch sein, ich habe Chrome und habe keine Lust zu überprüfen! :) Trotzdem danke. –

+0

Es ist eine IE-Erweiterung von hinten, die auch auf WebKit und Opera verfügbar ist. Obwohl es nichts bringt, was 'getElementsByTagName' noch nicht tut, wird es nie wirklich genutzt. – bobince