keinBlase: W3C Fehler: JS Write: style

Hallo Zusammen

Ich möchte, bei aktiviertem Javascript, einen Style Code ausgeben:

<script type="text/javascript">
document.write('<style type="text/css">#left .group{display:none;}</style>');
</script>

Ich habe diesen Code in meinem Head-Bereich integriert. Die Funktion geht, d.h. die CSS Klasse group wird überschrieben.

Nur motzt der W3C Validator:
document type does not allow element "style" here
…cument.write("<style type='text/css'>#left .group{display:none;}</sty

Warum? Das stimmt doch alles?

Gruss und Dank

  1. Welchen Dokumenttyp hast Du denn angegeben und wo steht dieses Script innerhalb der (X?)HTML-Datei?

    Meine Vermutung: der Style steht irgendwo im body, was nach (X)HTML-Standards nicht valide ist (aber meines Wissens trotzdem in allen aktuellen Browsern, die CSS unterstützen, funktioniert).

    Gruß, LX

    --
    RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
    RFC 1925, Satz 11a: Siehe Regel 6a
    1. Hallo

      Nein, der Code steht eben im Head bereich. Ich versteh darum die Fehlermeldung nicht...

      An der Syntax kanns auch nicht liegen, der JS Validator ist grün :)

      Gruss und dank

      1. Nein, der Code steht eben im Head bereich. Ich versteh darum die Fehlermeldung nicht...

        script darf nur #PCDATA beinhalten

        1. WOW Thx....das habe ich gesucht :)

          1. Hallo

            Sorry, evt bin ich auch zu doof, aber wenn ich

            document.write('<![CDATA[<style type="text/css">#left .articlegroup1{display:none;}</style>]]>');

            integriere, wird das style nicht mehr erkannt!!!

            Gruss

            1. integriere, wird das style nicht mehr erkannt!!!

              Natürlich nicht. Damit schreibst du da exakt diese Zeichenkette ins Dokument.

              Die Kennzeichnung als CDATA hat etwa denselben Effekt wie dies hier:
              &lt;style type=&quot;text/css&quot;&gt;>##left .articlegroup1{display:none;&lt;/style;&gt;

            2. Sorry, evt bin ich auch zu doof, aber wenn ich

              sorry, aber hast du meinen Link nicht gelesen?
              Dort steht wie du es richitg machst.

              Struppi.

              1. Hallo Struppi

                Doch, aber falsch integiert. Nun hats geklappt:

                <script type="text/javascript">
                <!-- // hide from really old browsers that noone uses anymore
                // also hide from browsers that use the XHTML DTD
                document.write('<style type="text/css">#left .articlegroup1{display:none;}</style>');
                // -->
                </script>

                Gruss und Dank
                Damian

                1. Doch, aber falsch integiert. Nun hats geklappt:

                  Das ist immer noch falsch, wenn du XHTML verwenden willst, aber egal, es steht ja bei selfhtm richtig.

                  Struppi.

  2. Nur motzt der W3C Validator:
    document type does not allow element "style" here
    …cument.write("<style type='text/css'>#left .group{display:none;}</sty

    Warum? Das stimmt doch alles?

    Dann ist ja alles gut. Oder kann es sein, dass dein Dokument ein XHTML Dokument sein soll? Dann solltest du diesen Abschnitt  mal lesen: http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style

    Struppi.

  3. Hi,

    Ich möchte, bei aktiviertem Javascript, einen Style Code ausgeben:

    <script type="text/javascript">
    document.write('<style type="text/css">#left .group{display:none;}</style>');
    </script>

    Lass' den Unfug.

    Bringe die Regel in deinem normalen Stylesheet unter, und ergänze den Selektor führend um so etwas wie .hasJS
    Weise dann beim/nach dem Laden per JavaScript BODY oder HTML die Klasse hasJS zu.

    Vergiss, dass document.write mal existiert hat.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.