molily: Javascript Funktion später einbinden

Beitrag lesen

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?

  1. 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?

  1. 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