2016-05-04 16 views
0

ich möchte diesen js code verkürzen, kannst du?Wie kann ich diesen Javascript-Ausdruck verkürzen? document.createElement

<script> 
    var h = document.getElementsByTagName('head')[0], 
     s = document.createElement('script'); 
    s.type = 'text/javascript'; 
    s.src = 'file.js'; 
    h.appendChild(s); 
</script> 

Ich denke, so etwas aber nicht:

<script> 
    var h = document.getElementsByTagName('head')[0], 
     s = document.createElement('script').type='text/javascript'; 
    s.src = 'file.js'; 
    h.appendChild(s); 
</script> 
+0

Sie könnten die Zuweisung zu "type" weglassen, wenn Sie HTML5-kompatible Browser als Ziel haben. Ansonsten fürchte ich, dass der Code so kurz ist, wie er wird (ohne Verschleierung). –

+0

Es funktioniert nicht, weil 's' den Wert von' type' zugewiesen bekommt und nicht das ganze Objekt. – ste2425

+0

können Sie 'document.head' anstelle von' document.getElementsByTagName ('head') [0] 'verwenden und Sie brauchen es nicht als' var h', einfach 'document.head.appendChild (s)' – terabaud

Antwort

1

Wie Frédéric bereits oben erwähnt, immer moderne Browser übernehmen den <script> Tag JavaScript standardmäßig enthalten. Also kommst du vielleicht mit so etwas davon.

(s = document.createElement("script")).setAttribute("src", "/path/to/file.js"); 
document.head.appendChild(s); 

Die einzige Einschränkung dieser Implementierung schmutzig ist, dass es keine Methoden Verkettungs nicht unterstützt, da setAttribute keinen Rückgabewert hat.

1

was diese

var h = document.getElementsByTagName('head')[0], 
s = document.createElement('script').setAttribute("type", "text/javascript").setAttribute("src","file.js"); 
h.appendChild(s); 
+0

Ich glaube nicht, dass das funktionieren würde. Uncaught TypeError: Die Eigenschaft 'setAttribute' von undefined kann nicht gelesen werden. – techouse

+0

Laut http://www.w3schools.com/jsref/met_element_setattribute.asp hat setAttribute keinen Rückgabewert. Wie kann eine solche Kette funktionieren? – Aconcagua

2

Sie document.head statt getElementsByTagName nutzen könnten. Also:

s = document.createElement('script'); 
s.type = 'text/javascript'; 
s.src = 'file.js'; 
document.head.appendChild(s);