molily: IE-CSS-Expressions

Beitrag lesen

Meine Tests haben ergeben, dass die Expression zumindest auf den DOM-Baum Zugriff hat, der vor ihm liegt und schon gerendert wurde.

Da eingebundene Stylesheets genauso wie Scripte das Parsen des HTML-Codes verzögern, also beim Einlesen des <body> schon alle im Head eingebundenen Stylesheets geladen sind, ist es sicher, dass zumindest alle Style-Regeln dem Browser bekannt sind, wenn IE auf ein Element trifft, dessen CSS-Eigenschaftswert eine Expression beinhaltet.

Es sind jedoch nicht notwendig alle im DOM folgende Elemente schon gerendert. Sowohl DOM-Ready, wie es jQuery misst, als auch window.onload finden später statt.

Bei einem mittelgroßen Dokument mit sehr vielen Styles und einigen Bildern hat die Expression in meinem Test auf das gesamte DOM Zugriff. Erst wenn weitere ladeverzögernde Elemente hineinkommen (z.B. ein <script> mit sleep(10)), dann sieht die Expression bei ihrer ersten Ausführen das DOM nur bis dorthin, wo es eingelesen und gerendert wurde.

In der Praxis dürfte eine Expression bei ihrer ersten Ausführung daher auf das gesamte, schon gerenderte Dokument Zugriff haben. Das ist natürlich nicht gleich window.onload. Wenn noch irgendwo ein Bild geladen wird, das das Layout beeinflusst, dann kann es sein, dass die Expression von falschen Werten ausgeht. Mit festen width- und height-Attributen lässt sich das natürlich umgehen.

Bei meinem min-width-Anwendungsfall ist eigentlich jegliche Umgebung egal, weil bloß geprüft wird, wie breit das Element mit dem enthaltenen einfachen Text gerendert wird (alle Parameter dafür sind dem Browser schon beim Parsen bekannt) und ob eine Aufstockung auf die Minimalbreite notwendig ist. Auch bei max-width und max-height sehe ich keine Probleme, weil ein Vorfahrenelement die Breite vorgibt, die das betreffende Element einnehmen kann, sodass das Layouten seines Inhalts sehr determiniert verläuft.