molily: Scope von eval() im IE anders als im FF???

Beitrag lesen

Hallo,

runScript = function(code) {
  window.eval(code);
};

Nun sollte doch die Funktion "test" im Scope des "window"-Objekts ausgeführt und damit an dieses "angehängt" werden.

Ob du eval oder window.eval notierst, das sollte meines Wissens denselben Effekt haben.

Da der Code in onclick etc. auch immer im Scope des "window"-Objekts ausgeführt wird (ist doch so, oder???)

Nein, this zeigt auf das Elementobjekt.

sollte doch nun ein Klick auf den Link ein Fenster mit "TEST" hervorbringen.

Ich wüsste nicht, wieso.

DENKSTE!!! Firefox macht das ganze wie erwartet. Der IE meint jedoch: "Object expected" und zeigt auf die Zeile des Links.

Da staune ich eher über Firefox' Verhalten, das mir ein Sonderfall zu sein scheint. Konqueror pflichtet MSIE übrigens bei, Opera dafür Firefox.

WARUM???

Keine Ahnung, ehrlich gesagt. Firefox' und Operas Verhalten erscheint mir aber unlogisch, wenngleich diese Einrichtung natürlich praktisch ist, aber wertlos, solange die Browser sich nicht einig sind.

Würde ich übrigens den Funktionsstring so vom Server erhalten: "test = function() { alert('TEST'); };" funktionierts unverständlicherweise in beiden Browsern - sogar ohne "window." vor eval().

Wieso unverständlicherweise?

Mit »test = function () {}« oder »window.test = function () {}« legst du explizit eine globale Variable an. »function func () {}« hingegen ist in einer Funktion äquivalent zu »var func = function () {};«, das legt eine lokale Variable an.

Leider ist der Funktionsstring und der String hinter onclick für mich nicht zu beeinflussen!!!

Dann wirst du das Problem wohl nicht beheben können.

Schau dir auch mal diesen Thread an:
</archiv/2006/11/t140426/>

Mathias