W3-Validatorfehler wegen document.writeln
Tom
- javascript
0 MudGuard0 christopher0 Linksetzer0 Linksetzer 2
Ich verwende auf meiner Seite zur Korrektur von Anzeigeproblemen in Netscape 4.x ein kleines Script, das mir einige CSS-Definitionen, die ich in der zentralen .CSS Datei festgelegt habe zurechtbiegt.
Der Code dazu sieht so aus:
<script language="JavaScript" type="text/javascript">
19: <!--
20: if((navigator.appName == "Netscape") && (navigator.appVersion.charAt(0) < "5"))
21: {
22: document.writeln('<style type="text/css"> td.header {background-color : white; border : none; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-size : 12pt; font-style : normal; font-weight : normal; text-align : center; vertical-align : middle; width: auto;height: 40px; padding : 2px 10px 2px 10px;} td.plain {background-color : white; border : none; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-style : normal; font-weight : normal; padding : 0px 0px 0px 0px; width: auto; height: auto;} .button {width:auto; border:none;} td {background : White; border : 1px solid Black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-size : 11pt; font-style : normal; font-weight : normal; text-align : center; vertical-align : middle; width: 200px; height: 40px; padding : 2px 10px 2px 10px;} </style>');
23: }
24: else
25: {
26:
27: }
28: -->
29: </script>
wäre nach meiner Ansicht eigentlich korrekt und funktioniert auch wunderprächtig.
Der W3 Validator meint dazu jedoch:
This page is not Valid HTML 4.01 Transitional!
...padding : 2px 10px 2px 10px;} </style>');
^
weiters wird bei Netscape 4.x ein Hinweis eingeblendet, dass es einige Darstellungsfehler gibt, welcher auch mittels Browserversionsabfrage und document.writeln() realisiert, welche den Validator ebenfalls stört:
...unter. Bitte dies zu entschuldigen</p><p class="klein"> </p>');
^
...uldigen</p><p class="klein"> </p>');
^
Angefangen natürlich mit document.writeln('<p class="..."> ......
Jemand eine Idee, was da faul ist und wie man den Validator dazu überredet, das Ganze zu akzeptieren oder was ich ändern muss?
Hi,
Ich verwende auf meiner Seite zur Korrektur von Anzeigeproblemen in Netscape 4.x ein kleines Script, das mir einige CSS-Definitionen, die ich in der zentralen .CSS Datei festgelegt habe zurechtbiegt.
Der Code dazu sieht so aus:
<script language="JavaScript" type="text/javascript">
22: document.writeln('<style type="text/css"> [...viel CSS gekürzt, da irrelevant...] padding : 2px 10px 2px 10px;} </
genau an dieser Stelle ist das Script-Element zu Ende.
wäre nach meiner Ansicht eigentlich korrekt und funktioniert auch wunderprächtig.
Ist nicht korrekt, funktioniert aber in manchem Browser, weil die teilweise (zu) fehlertolerant sind.
Der W3 Validator meint dazu jedoch:
This page is not Valid HTML 4.01 Transitional!Line 22, column 850: end tag for element "STYLE" which is not open (explain...).
...padding : 2px 10px 2px 10px;} </style>');
Und damit hat er vollkommen recht.
Denn, wie bereits oben erwähnt, endet der Inhalt eines Script-Elements beim ersten Auftreten des end-tag-open-delimiters </
Siehe auch: http://www.w3.org/TR/html401/types.html#type-cdata
Jemand eine Idee, was da faul ist
Dein Code.
und wie man den Validator dazu überredet, das Ganze zu akzeptieren oder was ich ändern muss?
Du mußt aus dem end-tag-open-delimiter eine harmlose Zeichenkette machen, indem Du z.B. das zweite Zeichen escapest.
PS: seltsam, ist heute schon der 3. oder 4. Thread, wo es um den end-tag-open-delimiter geht. Wochenlang war nix damit...
cu,
Andreas
hi,
wenn du bei JS mit writeln arbeitest, musst du die / escapen.
sprich </script> wird zu </script>...
gruß
christopher