JavaScript nur ausführen, wenn CSS verfügbar
Michaela
- javascript
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.
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
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
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
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
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
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
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
[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
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