2010-09-01 3 views
11

ich dynamisch Javascript wollen hinzufügen, wie an ein bestehendes Skript Element etwas hinzufügen:Kann ich Javascript dynamisch an ein bestehendes Skript Element

var se = document.createElement('script'); 
se.setAttribute('type', 'text/javascript'); 
se.innerHTML = 'alert(1)'; 
document.getElementsByTagName('head').item(0).appendChild(se); 

Der interessante Teil se.innerHTML = 'alert(1)'; ist und wenn es gültig ist? Wenn nicht, wie kann ich das richtig machen?

+2

Ich versuchte es, nach dem Hinzufügen des ''

2

Mit innerHTML wird abgebrochen, wenn der Text etwas enthält, das als HTML wie < interpretiert werden kann. Es wäre besser, man anfügen (oder mehr) Textknoten:

var se = document.createElement('script'); 
se.setAttribute('type', 'text/javascript'); 
se.appendChild(document.createTextNode('alert(1)')); 
document.getElementsByTagName('head').item(0).appendChild(se); 
17

Alle Browser unterstützen derzeit eine JavaScript Text Eigenschaft und werten den Text aus, wenn ein neues Skriptelement (ohne ein src-Attribut) zum Dokument hinzugefügt wird.

innerHTML oder Hinzufügen von untergeordneten Knoten zu einem Skriptelement werten das Skript nicht in allen Browsern aus.

function addCode(code){ 
    var JS= document.createElement('script'); 
    JS.text= code; 
    document.body.appendChild(JS); 
} 

// Testfall

var s= 'document.body.ondblclick=function(e){\n'+ 
'e=window.event? event.srcElement:e.target;\n'+ 
'alert(e.id || e.tagName);\n'+ 
'}\nalert("ready to double click!");'; 

addCode(s); 
+1

Super !!! Funktioniert perfekt! –

+0

Funktioniert einwandfrei, wenn alle anderen Methoden zum Einfügen von Code in meine Seiten (nach dem Laden) fehlgeschlagen sind !!! –

Verwandte Themen