hempelr: Vorhandensein einer CSS-Klasse im Dokument prüfen?

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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

  3. 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

    1. 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

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)