Ich hatte mal auf einer Seite alle paar Millisekunden je 7 mal die Fenstergroesse abfragen muessen. Da ich keine Lust hatte, immer wieder kompliziert machende if() abfragen zu benutzen (da IE und NS da ja unterschiedliche Eigenschaften benutzen), speicherte ich beim Laden des Dokuments die erforderliche Methode in einer Variable und habe bei jedem Abfragen die Variable und eval() benutzt.
Das ist von der Uebersicht besser und Geschwindigkleitseinbussen waren auch auf langsamen Rechnern nicht bemerkbar.Das glaube ich nicht.
Mit "nicht bemerkbar" meine ich fuer das blosse Auge, fuer mich. Ich meine damit, dass die ANwendung trotz eval() fluessig lief.
Du kannst davon ausgehen, dass eval ca. 10 mal langsamer ist als der direkte JS Code (kann man zwar nicht so verallgemeinern, da es immer darauf ankommt was du genau machen willst, aber einfach Sachen z.b. Bildtausch waren das meine Meßwerte).
Da die komplizierte if abfrage so oder so durchgeführt werden muss (ich nehme an, dass die dann in einem String versteckt war),
Im Kopf der Datei wird einmal abgefragt, welcher Browser vorhanden ist und dann - je nach Browser - innerHeight und innerWidth bzw document.body.???? und document.body.???? - in einem String gespeichert.
In einer ganz anderen rekursiven (= sich selbst wieder aufrufenden, oder??) Funktion (Bilder drehen sich, wie bei SELFHTMLs bsp fuer das Dhtml Modell von Microsoft und der Kreis, in dem sich die Bilder drehen ist an die Fenstergroesse angepasst) wird dann diese Groesse abgefragen (denn Browserfenster kann sich ja aendern).
eval("fensterhoehe = " + browserAbhaengigerString);
Nur als Bsp alle Bezeichner etc hier.
ist eval langsam und eine Funktion die du aufrufst und entsprechend bennenst ist mit Sicherheit auch lesbarer.
lesbarer finde _ich_ die eval()-Loesung ^^
z.b.
var wert = ....
grenze_erreicht(wert) && tu_was();function grenze_erreicht(w)
{
if(...........) return true;
else return false;
}
Heisst das, tu_was() wird ausgefuert, wenn grenze_erreicht(wert) true zurueckgibt?
Struppi.
scherzkeks (danke nochmal und nen schoenen Montag noch!)