Erzeugung von <SCRIPT>-Nodes per DOM
Mittels DOM lassen sich neue Script-Blöcke erzeugen, wobei jedes Script-Objekt eine text-Eigenschaft besitzt, in welcher der Quellcode enthalten ist:
var script=document.createElement('script'); // Erzeugen
script.setAttribute('type','text/javascript'); // Optional: Skript-Typ
script.text="function Lache() { alert('haha'); }"; // Quelltext einfügen
document.getElementsByTagName('body')[0].appendChild(script); // Ins Dokument aufnehmen
Die text-Eigenschaft ist zwar überschreibbar, allerdings wird nicht in jedem Browser der neue Inhalt als neuer Quellcode aktiv, womit die nachträgliche Manipulation existierender Script-Blöcke leider nicht in Betracht kommt.
Zwecks Code-Änderung muss der jeweilige Block daher komplett neu angelegt werden. Bei häufigen Änderungen empfiehlt sich daher eine eigene Funktion (hier CreateCode) zur Code-Erzeugung:
var script=null, body=document.getElementsByTagName('body')[0];
function CreateCode(s) {
if (script) body.removeChild(script); // Existierendes Skript löschen
script=document.createElement('script'); // Erzeugen
script.setAttribute('type','text/javascript'); // Optional: Skript-Typ
script.text=s; // Quelltext einfügen
body.appendChild(script); // Ins Dokument aufnehmen
}
CreateCode("function Lache() { alert('haha'); }"); // Neuen Code erzeugen
Lache(); // Aufruf der neuen Funktion
CreateCode("function Lache() { alert('hihihi'); }"); // Code ändern
Lache(); // Aufruf der geänderten Funktion