Vorhandensein einer CSS-Klasse im Dokument prüfen?
hempelr
- javascript
Kann man irgendwie auf das Vorhandensein einer CSS-Klasse im Dokument prüfen, über alle importierten/eingelinkte CSS-Dateien und zentral dateiintenr spezifizierte Formate?
Hintergrund ist, dass per JS abgeprüft werden soll, ob es eine bestimmte CSS-Klasse gibt, und für den Positivfall diese für das HTML-Element gelten soll, wenn nicht, ein vorgegebener Standard-Style verwendet werden soll.
Die betreffenden HTML-Elemente werden von einem Perl-Script generiert, deshalb ist zur Laufzeit nicht klar, was alles so in der ebenfalls vom Script generierten gesamten HTML-Seite "drin" ist.
Serverseitig ist eine Auswertung nicht möglich, das kann also nur clientseitig per JS erfolgen und dann entspreichend manipuliert werden.
Danke für Tipps
Hi,
Kann man irgendwie auf das Vorhandensein einer CSS-Klasse im Dokument prüfen,
nein, denn es gibt keine CSS-Klassen. Ob eine HTML-Klasse im Dokument vorkommt, lässt sich jedoch schon prüfen - mit hohen Performance-Verlusten, wenn Du nicht weißt, in welchen Elementtypen sie vorkommen kann.
über alle importierten/eingelinkte CSS-Dateien und zentral dateiintenr spezifizierte Formate?
Moment, willst Du jetzt nach dem _Vorhandensein_ der HTML-Klasse prüfen, oder nach ihrer _Nutzung_ in einem CSS-Selektor?
Hintergrund ist, dass per JS abgeprüft werden soll, ob es eine bestimmte CSS-Klasse gibt, und für den Positivfall diese für das HTML-Element gelten soll, wenn nicht, ein vorgegebener Standard-Style verwendet werden soll.
Warum lässt sich das nicht mit reinem CSS lösen?
Cheatah
Hallöchen,
Kann man irgendwie auf das Vorhandensein einer CSS-Klasse im Dokument prüfen, über alle importierten/eingelinkte CSS-Dateien und zentral dateiintenr spezifizierte Formate?
Hintergrund ist, dass per JS abgeprüft werden soll, ob es eine bestimmte CSS-Klasse gibt, und für den Positivfall diese für das HTML-Element gelten soll, wenn nicht, ein vorgegebener Standard-Style verwendet werden soll.
Wenn du eine CSS-Klasse zuweist, die es nicht gibt, dann werden doch sowieso die aktuellen Standards verwendet. (Schreib mal einen CSS-Selektor falsch, und du wirst sehen, was passiert - nämlich nichts :)
Aus meiner Sicht wäre dafür zu sorgen, dass
1. "ein vorgegebener Standard-Style" immer vorhanden ist
2. den generierten Elementen immer die gewünschte Klasse zugewiesen wird
mit der Effekt, dass bei Vorhandensein der Klasse deren Formatierung wirkt, und sonst der Standard wirksam wird.
Die betreffenden HTML-Elemente werden von einem Perl-Script generiert, deshalb ist zur Laufzeit nicht klar, was alles so in der ebenfalls vom Script generierten gesamten HTML-Seite "drin" ist.
Serverseitig ist eine Auswertung nicht möglich, das kann also nur clientseitig per JS erfolgen und dann entspreichend manipuliert werden.
Wenn das oben beschriebene funktioniert, kannst du dir die JS-Auswertung sparen.
MfG
vaudi
Hallo,
Hintergrund ist, dass per JS abgeprüft werden soll, ob es eine bestimmte CSS-Klasse gibt, und für den Positivfall diese für das HTML-Element gelten soll, wenn nicht, ein vorgegebener Standard-Style verwendet werden soll.
Das ist die grundlegende Funktionsweise von Cascading Stylesheets.
Man notiert Formatierungsregeln und diese werden von anderen überschrieben oder ergänzt.
http://de.selfhtml.org/css/formate/kaskade.htm
Serverseitig ist eine Auswertung nicht möglich, das kann also nur clientseitig per JS erfolgen und dann entspreichend manipuliert werden.
Es gäbe eine JavaScript-Lösung, aber die ist ziemlich kompliziert und recht unzuverlässig. Über document.styleSheets kann man auf alle eingebundenen Stylesheets zugreifen, diese durchlaufen und nach einer Regel suchen, die z.B. für ».klasse« Formatierungen vergibt. Ein Helferscript dafür: http://coding.binon.net/dhtml/cssrule.htm
Aber wie meine Vorredner sagen ist JavaScript mit hoher Wahrscheinlichkeit nicht das geeignete Mittel bzw. der Punkt, an dem du dieses Problem lösen solltest.
Mathias
Hi,
Ein Helferscript dafür: http://coding.binon.net/dhtml/cssrule.htm
Wobei damit keine importierten Regeln durchsucht werden. Das würde das Script, jedenfalls den IE-Zweig, nochmal vergrößern ... :-/
... und solange ich es nicht brauch ... :)
Gruß, Cybaer