2016-05-13 2 views
1

Ich verwende den folgenden Code ein Skript auszuführen:Kann document.getElementsByTagName ('head') [0] jemals null zurückgeben?

var js = document.createElement('script'); 
js.src = 'http://xxx./yyy.js'; 
document.getElementsByTagName('head')[0].appendChild(js); 

Wird dieser Code Arbeit in allen Arten von Browsern? Zum Beispiel habe ich Angst, dass, wenn das head-Tag aus irgendeinem Grund nicht existiert, ich einen Fehler 'Null-Objekt' erhalten werde.

Aber Tatsache ist, ich habe in einigen Browsern getestet, kein Fehler ist passiert.

Also, bitte Experte sagen Sie mir, wird das für alle Browser funktionieren?

+2

Dies ist nicht wirklich ein Problem/Problem .... Stackoverflow ist für die Programmierung von Problemen. Sie müssen Ihre eigenen Entwicklungs- oder Forschungsbeschränkungen beim Erstellen von dynamischen Skript-Tags testen. – NewToJS

+0

Das einzige Problem, das ich sehe, ist das Case-Problem in 'getelementsbytagname' sollte es' getElementsByTagName' sein - Pascal Casing http://c2.com/cgi/wiki?PascalCase –

+0

'scrip' sollte' script', 'getelementsbytagname' sollte 'getElementsByTagName' und '.appendChild()' sollten '.appendChild (js)' sein – itzmukeshy7

Antwort

0

Es ist possible für document.getElementsByTagName('head')[0] (und document.head) null zurückzukehren, wenn es keine <head> in dem Dokument ist, z.B. nachdem jemand tut dies:

document.head.parentNode.removeChild(document.head); 

Auf der anderen Seite, die sollte Quellcode <head> in HTML Weglassen nicht führen dazu in „HTML5“ -kompatiblen Parser, wie sie required to insert it for you sind. (Ich würde nicht erwarten, dass ältere Browser, anders zu sein, aber es ist unmöglich, über alle Versionen von allen Browsern auf jedem Eingang sicher sein.)

Wenn Sie mit mit the same browser support as jQuery 2 zufrieden sind, könnten Sie entlastet werden sie wissen use head without null-checking .