Hallo,
anschliessend nach neuer script suchen und ausführen:
eval($(sId).getElementsByTagName('script')[0].innerHTML);
Wieso machst du das so?
Du montierst ein script-Element ein, hängst den Code als Textknoten an und führt den dann mit eval() aus?
Wieso arbeitest du nicht direkt XMLHttpRequest.responseText? Was hat es mit dem script-Element auf sich?
- ein alert wird angezeigt mit "testFunc wurde aufgerufen mit:a"
Wo wird der alert aufgerufen?
innerhalb der script section, während eval ausgeführt wird, ist testFunc bekannt
Ok, also wird der Code ausgeführt. Fehlerfrei?
- klick auf Link "Link2" -> javascript Fehler: "testFunc not defined"
anscheint ist testFunc was anderes als »globale Variablen«
Steht der eval() in einer Funktion?
Dann liegt es daran, dass du die Funktionen als lokale Variablen definierst. Beispiel:
function f () {
eval("function a () {}");
// ist dasselbe wie hier direkt function a () {} zu schreiben
// und das ist identisch damit hier vier a = function () {}; zu schreiben
// und das legt bekanntlich eine LOKALE Variable an, d.h.
// die Funktion ist nur hier in der Funktion f verfügbar, nicht global
}
f();
alert(typeof window.a); // gibts nicht
Ok, was macht man da? Zum Beispiel die Funktion ausdrücklich beim window-Objekt speichern:
function f () {
eval("window.a = function () {};");
}
f();
alert(typeof window.a); // ok
a(); // geht
--------------- wird per ajax vom server geladen --------------
<div id="ajax_script">
<script...
Siehe oben. Das ist so eigentlich überflüssig, warum nicht direkt JavaScript-Code zurückgeben?
Mathias