CSS-Datei im NOSCRIPT-Bereich laden
floater
- html
Hallo,
ich möche bei nichtaktiviertem JavaScript eine spezielle CSS-Datei laden.
Das mache ich so:
<noscript>
<link rel="stylesheet" type="text/css" href="css/noJs.css">
</noscript>
bzw. so:
<noscript>
<style type="text/css">
@import url(css/noJs.css);
</style>
</noscript>
Das funktioniert beides auch wie gewünscht.
Nur leider hat das einen Schönheitsfehler ,der HTML-Vadilator meckert:
Gibt es eine Möglichkeit, das W3C-konform hinzubekommen?
Gruß,
Floater
Mahlzeit floater,
Nur leider hat das einen Schönheitsfehler ,der HTML-Vadilator meckert:
'document type does not allow element "LINK" here', bzw. 'document type does not allow element "STYLE" here'.
Wo genau stehen Deine <noscript>-Blöcke? Dass sowohl <http://de.selfhtml.org/html/referenz/elemente.htm#link@title=<link>>- als auch <http://de.selfhtml.org/html/referenz/elemente.htm#style@title=<style>>-Tags nur im <head> vorkommen dürfen, ist Dir bewusst?
MfG,
EKKi
Hallo EKKi,
Wo genau stehen Deine <noscript>-Blöcke? Dass sowohl <http://de.selfhtml.org/html/referenz/elemente.htm#link@title=<link>>- als auch <http://de.selfhtml.org/html/referenz/elemente.htm#style@title=<style>>-Tags nur im <head> vorkommen dürfen, ist Dir bewusst?
Dass STYLE und LINK nur im HEAD vorkommen dürfen, dass ist mir bewusst.
Allerdings darf NOSCRIPT nicht im HEAD erscheinen.
Ich hatte erst o. g. Code innerhalb des HEAD plaziert, dann aber innerhal des BODY-Bereiches gesetzt.
Gruß,
Floater
Mahlzeit floater,
Dass STYLE und LINK nur im HEAD vorkommen dürfen, dass ist mir bewusst.
Naja, ich dachte mir, ich frage mal lieber nach. Man soll ja nicht stillschweigend davon ausgehen, dass Forumsteilnehmer gewisse Fähigkeiten haben - genauso wie bei Browsern ... ;-)
Allerdings darf NOSCRIPT nicht im HEAD erscheinen.
Das ist dann natürlich ungünstig, stimmt. Aber Kai345 hatte ja schon ne gute Idee ...
MfG,
EKKi
Grundlage für Zitat #1096.
[latex]Mae govannen![/latex]
ich möche bei nichtaktiviertem JavaScript eine spezielle CSS-Datei laden.
Gibt es eine Möglichkeit, das W3C-konform hinzubekommen?
Binde die noJS.css als Standard ein und erzeuge per Javascript das link-Element zur erweiterten CSS-Datei.
Ob du das Link-Element für die noJS.css per JS rechtzeitig (d.h. vor der Anwendung) entfernen kannst, weiß ich gerade nicht, ansonsten mußt du in der erweiterten css-datei die Werte explizit wieder überschreiben.
Cü,
Kai
Hallo Kai,
Binde die noJS.css als Standard ein und erzeuge per Javascript das link-Element zur erweiterten CSS-Datei.
Ob du das Link-Element für die noJS.css per JS rechtzeitig (d.h. vor der Anwendung) entfernen kannst, weiß ich gerade nicht, ansonsten mußt du in der erweiterten css-datei die Werte explizit wieder überschreiben.
Danke!
Deine genannte Lösung ist eigentlich so einfach wie logisch.
Ich bin von vornherein von JS-Unterstützung ausgegegangen und habe dann versucht die Nicht-JS-Unterstützung mit einzubeziehen.
Es sollte umgekehrt sein.
Gruß,
Floater
Hi,
Binde die noJS.css als Standard ein und erzeuge per Javascript das link-Element zur erweiterten CSS-Datei.
Ob du das Link-Element für die noJS.css per JS rechtzeitig (d.h. vor der Anwendung) entfernen kannst, weiß ich gerade nicht,
JS kann den URL des Original-LINK in dem Moment ändern, in dem er existiert. Also einfach direkt hinter dem LINK ein Script plazieren, das den Wert des HREF-Attributs austauscht ...
Gruß, Cybaer
Hi,
ich möche bei nichtaktiviertem JavaScript eine spezielle CSS-Datei laden.
Halte ich, sofern nicht fuer die non-JS-Version massive Korrekturen noetig sind, fuer unnoetig bzw. mit Kanonen auf Spatzen geschossen.
I.a.R. ist es bei mir in solchen Faellen hoechstens bei ein paar Elementen (Klappmenue o.ae.) noetig, die per JS ausgeklappt werden sollen; per default sollten sie also sichtbar gelassen werden, waehrend sie ohne JavaScript zunaechst "eingeklappt" werden.
Das loest man m.E. eleganter, in dem man beide Faelle in einer CSS-Ressource definiert, und dann nur per JavaScript die Klasse von body aendert(/ergaenzt) - also Gebrauch vom Nachfahrenselektor macht.
Beispiel:
#irgendeinElement { display:block; } /* normale Anzeige, display also in diesem Falle sogar unnoetig */
body.hasJS #irgendeinElement { display:none; } /* wenn JS verfuegbar, dann Nichtanzeige, die spaeter per JS wieder geaendert wird */
<body>
<script type="text/javascript">document.body.className="hasJS';</script>
...
MfG ChrisB