floater: CSS-Datei im NOSCRIPT-Bereich laden

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:

'document type does not allow element "LINK" here', bzw. 'document type does not allow element "STYLE" here'.

Gibt es eine Möglichkeit, das W3C-konform hinzubekommen?

Gruß,
Floater

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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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

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

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. [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

    --
    The frog was a prince, the prince was a brick, the brick was an egg, the egg
    was a bird. Hadn't you heard? Yes, we're happy as fish and gorgeous as geese,
    and wonderfully clean in the morning.
    selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
    1. 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

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

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  3. 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

    --
    "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."