ChrisB: IE-CSS-Expressions

Beitrag lesen

Hi Mathias, hi everyone else,

Was ich mich frage: Wann wird eine Expression eigentlich das erste Mal ausgewertet, wie weit sind die Stylesheets zu diesem Zeitpunkt eingelesen und wie weit ist das Rendering der Seite fortgeschritten?

Wenn ich Gunnars Beispiel mit der Count-Funktion verwende, und den Selektor der "Expresion-Regel" von img auf ein Element ändere, das im Testdokument gar nicht vorkommt - dann bleibt die Anzeige des Zählerstandes schön friedlich auf 0 stehen, egal wie viel ich mit der Maus herumfahre oder sonstwelche Aktionen durchführe.

Also werden CSS Expressions offenbar schon mal nur dann ausgewertet, wenn die Regel auch wirklich "zur Anwendung" kommt, also der Selektor auf im DOM existente Strukturen matched.

Je nach Position der Expression in dem/dem Stylesheet/s und je nach Komplexität des Layouts fürchte ich immer, dass diese erste Auswertung viel zu früh stattfindet und damit die üblicherweise verwendeten JS-Eigenschaften nicht die letztendliche Box-Position wiedergeben

Also bevor das Element, auf das sie angwendet werden, "existiert", wohl schon mal nicht.

Aber ob alle computed values für CSS-Eigenschaften, die sich aus eingebundenen Stylesheets ergeben, schon in ihrer endgültigen Ausprägung vorhanden sind, lässt sich daraus natürlich ableiten.

Aber wie ist das prinzipiell? Weißt du, ob das mal jemand untersucht hat oder ist das irgendwo definiert?

In der MSDN habe ich auf Anhieb keinen Hinweis darauf gefunden, wann Expressions zum ersten Mal ausgewertet werden.

Ein weiterer Test lässt mich aber vermuten, dass onload abgewartet wird:
Ich habe in Gunnars Beispiel die count-Funktion derart verändert, dass sie nicht mehr nach einem Element mit der ID "counter", sondern "counter2" sucht. Das ist im Dokument nicht vorhanden - also bekomme ich eine JS-Fehlermeldung bei jedem Mal, wo die Expression ausgewertet wird.
Jetzt ergänze ich das Dokument um eine onload-Funktion, die den ID-Wert des Elements mit der ID "counter" durch "counter2" ersetzt - und bekomme damit keinen JS-Fehler mehr, weil die count-Funktion jetzt wieder das Element findet, welches sie sucht.
Wenn ich also keinen groben Denkfehler gemacht habe, bedeutet das wohl, dass Expressions erst nach dem Eintreten von onload erstmalig ausgewertet werden. (Meine Hand dafür ins Feuer legen würde ich nicht, weil ich jetzt alles, CSS-Regeln und JavaScript-Code, inline im Dokument notiert habe - und nicht mit 100%iger Sicherheit sagen kann, ob das Verhalten exakt das selbe wäre, wenn sowohl CSS und JavaScript ausgelagert wären.)

MfG ChrisB

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