Michaela: JavaScript nur ausführen, wenn CSS verfügbar

Hallo Selfhtml-ler,

ich arbeite zur Zeit an einem Projekt, das einigermaßen "barrierefrei" (falls es sowas überhaupt geben kann) sein soll.

Dabei ist es für mich wichtig, dass auch der Fall Textbrowser o.ä. behandelt wird, also wenn CSS nicht oder nur minimal unterstützt wird.

Nun meine Frage: Theoretisch wäre es ja möglich, dass man CSS im Browser ausschaltet und JavaScript trotzdem laufen lässt. Dies möchte ich auf meiner Seite aber gerne verhindern, da meine Scripte ohne CSS sinnlos sind.

Gibt es nun irgendeine Möglichkeit, die CSS-Unterstützung durch JavaScript zu testen?
Es gibt natürlich genügend Scripte im Netz, die mittels Objektabfragen den Browser genau bestimmen können, aber damit weiß ich ja trotzdem nicht, ob CSS auch aktiviert ist.

Vielen Dank schon mal im Voraus.

  1. Grüße,

    Es gibt natürlich genügend Scripte im Netz, die mittels Objektabfragen den Browser genau bestimmen können, aber damit weiß ich ja trotzdem nicht, ob CSS auch aktiviert ist.

    man wird dir sagen, dass dies zweiffelhaft ist - man wird dir von benutzeriegenen-stylesheets erzählen, und so weiter und so fort.

    tatsache ist - ich kann mir kein fall vorstellen bei dem man JS aber kein CSS hatte. abschaltreihnefolge ist JS, CSS - andersrum ist es selten. und wen es jemand anstellt - dann wohlwissend und du solslt den daran nicht hindern.

    teile user grundsätlzich in 2 gruppen - die ersten nutzen IE, die zweiten wissen meistens was sie tun.

    MFG
    bleicher

    --
    __________________________-
    Die versprechen ernsthaft werbefreien hosting?
    1. Hi,

      tatsache ist - ich kann mir kein fall vorstellen bei dem man JS aber kein CSS hatte.

      Wie war das noch mit dem Textpad, dessen Browser JS hatte, aber kein CSS?

      Aber zugegeben: Unwahrscheinlich ist es schon, auch wenn man bei Nicht-IEs locker CSS deaktivieren kann, während JS noch aktiv ist.

      Gruß, Cybaer

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

    Gibt es nun irgendeine Möglichkeit, die CSS-Unterstützung durch
    JavaScript zu testen?

    erzeuge ein element Deiner wahl mit hilfe von JavaScript und haenge
    dies an einer aus Deiner sicht geeigneten stelle im DOM-baum so ein,
    dass eindeutige style-regeln Deines CSS dieses element erschlagen.
    oder greif dir mithilfe von JavaScript ein ebensolches schon mit dem
    html-dokument ins DOM gerenderte element heraus und pruefe, ob
    die current/computed style eigenschaften Deinen erwartungen
    entsprechen - am besten irgendwas mit "display: none;" oder sogar
    was mit "opacity: ??;".

    so long - peterS. - pseliger@gmx.net

    --
    »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
    Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
    ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]
    1. Hi,

      entsprechen - am besten irgendwas mit "display: none;" oder sogar
      was mit "opacity: ??;".

      Ja, display ist gut. opacity ist aber a) zu neu, b) gibt's ohnehin nicht auf dem IE und die KHTML-Engine hat hier c) einen "Bug".

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
    2. Grüße,
      seltsam - ich hatte diesbezüglich probleme -
      ein mit css auf disply:none; gestelltes div
      ergibt für

      if(document.getElementById('entsprechendeID').style.display=='none'){

      NICHT true - dh else{ wird ausgeführt.
      um den element einzublenden muss die funktion 2mal ausgeführt werden, da else display JS-mäßig auf none stellt - was dann doch true ist.

      ok das ist auch mit CSS lösbar - aber ich meine den ansatz jetzt.

      MFG
      bleicher

      --
      __________________________-
      Die versprechen ernsthaft werbefreien hosting?
      1. Hi,

        ein mit css auf disply:none; gestelltes div

        !

        Mit style kann man nur Werte auslesen, die auch mit style gesetzt wurden (oder zumindest Inline-Styles). Mit style läßt sich ein im Stylesheet gesetzter Stil *nicht* abfragen. Dafür gibt es currentStyle/getComputedStyle() (ermittelt den tatsächlich aktuellen Wert, was allerdings nicht bei allen Stil-Eigenschaften/Schreibweisen funktioniert) oder eben der direkte Zugriff auf das Stylesheet via styleSheets-Collection.

        Nachdem Du dann zum ersten Mal style benutzt hast, funktioniert die Abfrage im folgenden natürlich.

        Gruß, Cybaer

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

    Nun meine Frage: Theoretisch wäre es ja möglich, dass man CSS im Browser ausschaltet und JavaScript trotzdem laufen lässt. Dies möchte ich auf meiner Seite aber gerne verhindern, da meine Scripte ohne CSS sinnlos sind.

    Nun ja: Textbrowser mit JS und ohne CSS abzufangen ist weniger das Problem (s. peter s.' Posting). Ggf. reicht da schon eine Prüfung auf das Vorhandensein der Eigenschaft style.

    Wenn man aber CSS in einem CSS-fähigen Browser abschaltet (zumindest in Opera & FF ist das kein Problem - nativ oder via PlugIn), dann könnte es durchaus sein, daß der Browser CSS-Angaben intern verarbeitet, aber eben nicht nutzt. Dann würde Peters Vorschlag bezügl. currentStyle/getComputedStyle() nicht greifen.

    Probiers halt einfach mal aus, wie zumindest Opera und FF dort reagieren. Aber selbst wenn das klappt: eine Gewähr, daß es andere Browser auch so machen, kann dir keiner geben ...

    Gruß, Cybaer

    --
    Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
    (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
    1. [latex]Mae  govannen![/latex]

      Wenn man aber CSS in einem CSS-fähigen Browser abschaltet (zumindest in Opera & FF ist das kein Problem - nativ oder via PlugIn), dann könnte es durchaus sein, daß der Browser CSS-Angaben intern verarbeitet, aber eben nicht nutzt. Dann würde Peters Vorschlag bezügl. currentStyle/getComputedStyle() nicht greifen.

      Ich kann mich dunkel erinnern, diesbezüglich selber schon vor diesem Problem gestanden zu haben, und ich meine (ohne es jetzt erneut geprüft zu haben), daß style grundsätzlich 'verfügbar' war, unabhängig davon, ob es im Browser deaktiviert wurde. Dieses Verhalten würde auch sinnvoll sein, damit scripte nicht mit einem Fehler abgebrochen werden, nur weil $user CSS deaktiert hat.

      Cü,

      Kai

      --
      Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
      Sacrifice - the future has it's price
      And today is only yesterday's tomorrow
      selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
      1. Hi,

        daß style grundsätzlich 'verfügbar' war, unabhängig davon, ob es im Browser deaktiviert wurde.

        Natürlich. Definitiv. Ich bezog mich bezügl. style ja auch ausschließlich auf Browser, die überhaupt kein CSS beherrschen (Textbrowser).

        Gruß, Cybaer

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