ChrisB: IE / dynamisches Laden von Scripts (window-objekt)

Beitrag lesen

Hi,

Nun möchte ich alle Function-Objekte, die das Dokument kennt, durchlaufen

for( var name in window ) {

var f = window[name];
if( typeof f != 'function' ) continue;
        //... do something
}


>   
> jedoch sind diese im window-Objekt nicht vorhanden, zumindest dann nicht, wenn man mit dieser for-each-Schleife drübergeht.  
  
Das ist bei Funktionen, die nicht erst nachgeladen werden, sondern schon "sofort" in einem Script-Bereich im Dokument vorhanden sind, nach meinem Test genauso.  
  
~~~javascript
function Test1() {  
	alert("Test1");  
}  
  
var Test2 = function() {  
	alert("Test2");  
}  
  
Test3 = function() {  
	alert("Test3");  
}  
  
window.Test4 = function() {  
	alert("Test4");  
}

Die einzige dieser Funktionen, die mir über eine for-in-Schleife analog deiner aufgelistet wird, ist - Test4.

Kennt man den Namen des Function-Objektes und referenziert dieses direkt (window["MeineKlasse"]), kennt sich IE plötzlich aus. Warum?!

Keine Ahnung. Ich kann nur vermuten, dass der IE an dieser Stelle ähnlich "speziell" ist, wie auch beim dynamischen erzeugen von Formularelementen - siehe auch </archiv/2009/7/t188948/#m1258678>

Selbst mit Variablen verhält er sich nicht anders, wenn ich analog zu obigem Beispiel

TVar1 = "TVar1";  
var TVar2 = "TVar2";  
window.TVar3 = "TVar3";

habe, und mit for-in über die Eigenschaften von window iteriere, dann bekomme ich lediglich TVar3 angezeigt, die ersten beiden jedoch nicht.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.