Hallo zusammen,
ich habe ein JavaScript im Dokument
z.B.
function test() { alert('test default'); }
Dann füge ich per JavaScript einen neuen Script Knoten ein, der mit die aktuelle Test-Funktion "überschreibt".
z.B.
function test() { alert('test neu'); }
Der DOM-Inspektor zeigt mir, dass die Funktion prinzipiell nicht überschrieben wird - sondern nur ein weiterer Skript Knoten mit derselben Funktion angefügt wurde.
Da diese aber dem Skript-Stack später hinzugefügt wurde, wird von allen gängigen Browsern diese "neu" Funktion angesprochen und ausgeführt.
Ich möchte nun die "neu" Funktion wieder aus dem DOM entfernen, so dass die ursprüngliche "default" Funktion wieder verwendet wird.
Dies funktioniert auch einwandfrei - der DOM-Inspektor zeigt mir den zuvor hinzugefügten Knoten nicht mehr an.
---
Wenn ich nun aber wieder die Funktion test() ausführe, wird immer noch die Logik der "neu" Funktion ausgeführt, obwohl diese nicht mehr im DOM vorhanden ist.
Nun meine Fragen:
1. Weis jemand, wie ich meine zweite Funktion wieder vollständig entfernen kann? So dass die erste Funktion wieder greift?
2. Helfen würde mir auch, wenn es eine Möglichkeit gibt, auszuwählen, welche Version einer Funktion aufgerufen wird. Geht das?
3. Kennt jemand eine Möglichkeit, einen Script Knoten eindeutig zu indentifizieren und auszuwählen - also nicht über getElementsByTagName?
4. Gibt es eine möglichkeit, bestehende Funktionsnamen zu manipulieren. Also z.B. aus "test()" die Funktion "test_alt()" zu machen?
Prinzipiell, würde mir schon eine Lösung auf eine der Fragen reichen, aber haltet euch nicht zurück wenn Ihr mehr wisst ;-)
Grüße,
Bene