java

JavaScript: Gültigkeitsbereich bei eval()

Ja, ich weiß: eval() is evil. Aber um dynamisch nachgeladenen JS-Code auszuführen geht halt kein Weg dran vorbei. Wenn man darin jedoch neue Funktionen definieren will, wird das ganze schnell eklig. Denn wohin (sprich: in welchem Scope) die definiert werden weiß keiner so recht.

Um euch die gleiche mühsame Fehlersuche zu ersparen: Übersicht über die Gültigkeitsbereiche. Fazit ist jedenfalls die Funktionen immer explizit auf window zu definieren:

var myEvalFunc = function() {
    eval('window.myAlert= function() {alert(123);};');
};
myEvalFunc();
myAlert();

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

Benachrichtige mich zu:
avatar

wpDiscuz
Weitere Beiträge zum Thema
TYPO3 einfach erklärt
TypoGento 1.0 ist released!
TYPO3 Bugday: Kernentwickler beheben Fehler
escapeHtml() statt htmlEscape()