Orlando: Unterschied zwischen externer und interner CSS-Definition

Beitrag lesen

Hi Cheatah,

Du musst im Grunde eine CSS-Engine in JavaScript komplett nachbilden.

Ach so. Das ist natürlich kein Problem für einen ausgewiesenen DOM-Experten wie mich...

Vermutlich geht dies am einfachsten, indem Du den externen CSS-Code analysierst und in eine Art "vorkompilierte Objektstruktur" umwandelst, mit welcher Du dann gezielt(er) nach passenden Nodes suchen oder aber zumindest leichter prüfen kannst, ob für eine Node ein CSS-Selektor angegeben wurde.

Bei der zu untersuchenden Menge der Nodes wird diese Lösung wahrscheinlich nicht sonderlich performant werden. Habe ich schon erwähnt, dass das nur im M$IE funktionieren muss? ;-)

Etwas praktischer gesagt: Nimm Dir (jeweils) einen Selektor, gehe ihn von links nach rechts durch, ermittle alle dazu passenden Nodes (ausgehend von Menge der weiter links gefundenen Nodes). Am Ende hast Du alle Elemente, die verändert wurden. Bei Bedarf musst Du nun noch die Vererbung beachten - unter Berücksichtigung der Ermöglichung des Überschreibens in späteren Elementen, wieder durch beliebig komplexe Vorgänge und mit definierten, aber nicht trivialen Wertigkeiten.

Hier steige ich endgültig aus. Es wäre vielleicht eleganter, einfach alle Nodes in diversen Schleifen durchzugehen und die Existenz der angesprochenen Pseudoformate zu prüfen, eine Funktion, die nur die mir bekannten Elemente durchläuft (ich kenne das Stylesheet), ist aber wesentlich einfacher umzusetzen. Mich würde trotzdem interessieren, wie die Extraktion aller Nodes und das Auslesen deren CSS-Eigenschaften aussehen könnte. Du beginnst ;-p

Grüße,
 Roland