Veröffentlicht 2. Oktober 200519 j Moinsen! ich hab mal ne ganz dumme frage ... ich hab ein javascript was ein link ausgibt: var stopticker = '[<a href="javascript:tickertoggle();">Pause<\/a>]'; Problem an der Stelle ist, dass der w3c validator das nicht mehr validiert und fehlermeldungen schmeißt: Error Line 323 column 55: document type does not allow element "a" here. var stopticker = '[<a href="javascript:tickertoggle();">Pause<\/a>]'; The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed). One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error). Hat jemand ne Ahnung wie ich den validierungsfehler beheben kann?!? mfg Eth
2. Oktober 200519 j Hi Hat jemand ne Ahnung wie ich den validierungsfehler beheben kann?!? normalerweise macht man ja bei CSS und JS einen HTML Kommentar hin. <style type="text/css"> <!-- --> </style> bzw <script type="text/javascript"> <!-- --> </script> Ich vermute, dass es dann geht. Gruß, Markus
2. Oktober 200519 j Eben diesen Kommentar verwendet man ja nicht mehr ^^ Es muss noch eine andere Möglichkeit geben. aber trotzdem danke
2. Oktober 200519 j Hi, Eben diesen Kommentar verwendet man ja nicht mehr ^^ Das ist mir aber nicht bekannt... Sind die Kommentare im XHTML Standard nicht mehr vorhanden? Gruß, Markus
2. Oktober 200519 j poste bitte mal deinen ganzen Code. Ich denke mal das da Markus ned ganz unrecht hat.
3. Oktober 200519 j eventuell geht es, wenn du den link in die seite schon einbaust, ihn aber mittels style="visibility: hidden" unsichtbar machst: <a href="javascript:tickertoggle();" style="visibility: hidden" id="link"> und erst dann aktivierst, wenn er erscheinen soll, bspw. wenn alle formularangaben getätigt worden sind: javascript:document.getElementById('link').style.visibility = "visible"; bei mir hat der validator da auch nicht konkret gemeggert
3. Oktober 200519 j <script type="text/javascript" language="JavaScript" src="./include/ticker.js"></script> <script type="text/javascript" language="JavaScript"> var stopticker = '[<a href="javascript:tickertoggle();">$lang[stopticker]<\\/a>]'; var startticker = '[<a href="javascript:tickertoggle();">$lang[startticker]<\\/a>]'; var delay = $tickerdelay;; var node = ''; var current = 0; var running = false; var contents = new Array(); $contents window.onload = tickerstart; </script> <table align="center" border="0" cellpadding="0" cellspacing="0" width="$tablewidth"> <tr> <td bgcolor="$bordercolor"> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr> <td class="tablerow" colspan="2" width="100%"> <table cellspacing="1" cellpadding="$tablespace" border="0" width="100%"> <tr> <td class="category"><strong><font color="$cattext">$lang[tickername] <span id="tickertoggle"> </span></font></strong> </td> </tr> <tr> <td bgcolor="$altbg2" class="mediumtxt"> <div id="tickerdiv"> <noscript>$noscriptcontents</noscript> </div> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> <br /> Ist prinzipiell ein Ausschnitt aus dem Quelltext vom XMB Board. www.xmbforum.com Achso, einige ganz wichtige Punkte: KEINE inline-styles verwenden, bitte. Und vor allem zumindest versuchen den Kommentar bei JS UND CSS weg zu lassen Danke Eth
3. Oktober 200519 j Moin, kenn mich mit dem ganzen JS Zeug's nicht so aus, aber versuche es auch so manchmal auf die Reihe zu kriegen Eins versteh ich hier dran aber nicht. Warum steh bei: var stopticker = '[<a href="javascript:tickertoggle();">$lang[stopticker]<\\/a>]'; var startticker = '[<a href="javascript:tickertoggle();">$lang[startticer]<\\/a>]'; 2 Backslashes in dem abschliessenden a Tag?
3. Oktober 200519 j Hi, Und vor allem zumindest versuchen den Kommentar bei JS UND CSS weg zu lassen Warum?! Gruß, Markus
4. Oktober 200519 j ich frag mich, was die eckigen klammern da machen ?!? Die sind wahrscheinlich nur [Verzierung]
5. Oktober 200519 j Moin, kenn mich mit dem ganzen JS Zeug's nicht so aus, aber versuche es auch so manchmal auf die Reihe zu kriegen Eins versteh ich hier dran aber nicht. Warum steh bei: var stopticker = '[<a href="javascript:tickertoggle();">$lang[stopticker]<\\/a>]'; var startticker = '[<a href="javascript:tickertoggle();">$lang[startticer]<\\/a>]'; 2 Backslashes in dem abschliessenden a Tag? Weil der sonst meckert von wegen Sonderzeichen. Ein backslash wird grundsätzlich als Special Character interpretiert. darum muss man den auch noch escapen ^^ Hi, Weil der Programmierstil mit Kommentaren veraltet ist. (Punkt) Kommentare WURDEN verwendet, um älteren Browsern die Möglichkeit zu geben, das javascript/css dezent zu "überlesen". Neue Browser können aber normalerweise javascript und css daher braucht man es auch nicht auskommentieren. Außerdem ändert das kommentieren an meinem Problem nichts. Riiiischtiiiisch.
5. Oktober 200519 j Moin! Also bei mir funktioniert und validiert das einwandfrei: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="de"> <head> <title>jsLink</title> </head> <body> <?php define('stopticker', 'derLink'); $lang = array('derLink' => 'Linktext'); ?> <script type="text/javascript"> var stopticker = '[<a href="javascript:void(0);"><?php echo $lang[stopticker]; ?><\/a>]'; document.write(stopticker); </script> </body> </html> Gruß, Tobias
6. Oktober 200519 j hmmm...seltsam. grundsätzlich stehen mir die Haare zu Berge wenn ich HTML-Tags in Javascript sehe ^^ k.A. seit welcher Version, aber man sollte nicht mehr mit document.write oder so arbeiten, sondern mit JS-DOM. Durchaus möglich das der XHTML standard da sich dann schon querlegt wenn er Tags im JS (script-tag) findet.
6. Oktober 200519 j Hm ich denke ich werd das script da einfach komplett raus hauen Geht mir auf die nerven ^^
6. Oktober 200519 j OK, Du hast es nicht anders gewollt! Jetzt wird's kompliziert: Also. XHTML wird vom Internet-Explorer ja bekanntermaßen nicht unterstützt. Deswegen muss man zunächst mal prüfen welcher Browser benutzt wird und welches Doctype, bzw. auch welchen Mimetype man mitschicken muss. Danach muss man beachten, dass man in XHTML kein document.write mehr verwenden darf, man also alles schön im DOM abbilden muss. Heraus kam daher dieses Dokument, welches zu 100% XHTML 1.1, bzw. im IE HTML 4.01 validiert: <?php $charset = 'iso-8859-1'; $mime = 'text/html'; function fix_code($buffer) { return (str_replace(" />", ">", $buffer)); } if (stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml')) { if (preg_match('/application\/xhtml\+xml;q=0(\.[1-9]+)/i', $_SERVER['HTTP_ACCEPT'], $matches)) { $xhtml_q = $matches[1]; if (preg_match('/text\/html;q=0(\.[1-9]+)/i', $_SERVER['HTTP_ACCEPT'], $matches)) { $html_q = $matches[1]; if ($xhtml_q >= $html_q) { $mime = 'application/xhtml+xml'; } } } else { $mime = 'application/xhtml+xml'; } } if (stristr($_SERVER['HTTP_USER_AGENT'],'W3C_Validator')) { $mime = 'application/xhtml+xml'; } if($mime == 'application/xhtml+xml') { $prolog_type = '<!DOCTYPE html PUBLIC \'-//W3C//DTD XHTML 1.1//EN\' \'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\'> <html xmlns=\'http://www.w3.org/1999/xhtml\' xml:lang=\'en\'>'; } else { ob_start('fix_code'); $prolog_type = '<!DOCTYPE HTML PUBLIC \'-//W3C//DTD HTML 4.01//EN\' \'http://www.w3.org/TR/html4/strict.dtd\'> <html lang=\'en\'>'; } header('Content-Type: '.$mime.';charset='.$charset); header('Vary: Accept'); echo $prolog_type."\n"; ?> <head> <title>jsLink</title> </head> <body> <?php define('stopticker', 'derLink'); $lang = array('derLink' => 'Linktext'); ?> <p id="derAbsatz"> [<script type="text/javascript"> var d = document; if (d.getElementById) { var a = d.createElement('a'); a.href = 'javascript:void(0);'; a.id = 'derLink'; d.getElementById('derAbsatz').appendChild(a); var derText = document.createTextNode('<?php echo $lang[stopticker]; ?>'); a.appendChild(derText); } </script>] </p> </body> </html> [/PHP] :eek Gruß, Tobias
6. Oktober 200519 j *kopfkratz* das Internetexplorer kein XHTML kann ist mir neu. Ich kenne mehrere Seiten die XHTML validiert sind (Doctype XHTML) und die im IE fehlerfrei funktionieren. einfaches Beispiel: www.tagesschau.de
6. Oktober 200519 j Hi! Naja, bei XHTML 1.0 strict und XHTML 1.1 ist es vorgeschrieben (bei XHTML 1.0 transitional und frameset wird es empfohlen), dass das Dokument mit dem Mimetype application/xhtml+xml ausgeliefert wird (http://www.w3.org/TR/xhtml-media-types/). Diesen Mimetype kennt der Internet Explorer aber nicht: http://www.google.de/search?hl=de&q=Internet+Explorer+application%2Fxhtml%2Bxml+Unterst%C3%BCtzung&btnG=Google-Suche&meta= Die Auslieferung von XHTML-Dokumenten als html/text kann zu unvorhersehbaren Ergebnissen führen.
6. Oktober 200519 j Aufgrund von accessibility Gründen verwenden wir DEFINITIV nur XHTML 1.0 Strict, unter besonderen umständen auch mal Transitional aber definitiv kein HTML 4 oder so ähnlich Ich werd mal schauen wie ich das am sinnvollsten Löse oder ob ich das JS da raus nehm. Bis jetzt hab ich noch keine Probleme mit der XHTML Doctype def gehabt. Schaut es euch an: www.webnauts.net forums.webnauts.net mfg Eth
6. Oktober 200519 j Aufgrund von accessibility Gründen verwenden wir DEFINITIV nur XHTML 1.0 Strict, unter besonderen umständen auch mal Transitional aber definitiv kein HTML 4 oder so ähnlich ... Welche Fähigkeiten bietet Dir XHTML die HTML 4x nicht hat?
6. Oktober 200519 j Es geht an dieser Stelle nicht direkt um die Vorteile von XHTML gegenüber von HTML 4, sondern eher um die Zukunftsorientierung unserer Webseiten. Im Netz wird immer weniger HTML4, aber immer mehr XHTML benutzt. Daher würde ich (und vor allem mein Kollege John hier *grins*) für zukunftsorientiertes Design grundsätzlich auf XHTML zurückgreifen, auf keinen Fall aber auf HTML 4 (oder noch schlimmer HTML 3 *gröööhl*) mfg Eth
7. Oktober 200519 j The benefits of adopting XHTML or upgrading your existing site to the new standards are many. First of all, they ensure an excellent forward-compatibility for your developed web sites. XHTML is the new set of standards that the web is build today and will be built on in the years coming, so future-proofing your work, you will avoid a lot of trouble later on. Can also be, that future browser versions will stop supporting deprecated elements from old HTML drafts, and so many old basic-HTML sites may begin displaying incorrectly and unpredictably. W3C explains why the need of XHTML here too : http://www.w3.org/TR/xhtml1/#why
7. Oktober 200519 j Hi! Editiert Ich meine ja nur, der Internet-Explorer kennt halt den Mimetype application/xhtml+xml nicht, XHTML muss aber mit diesem ausgeliefert werden, das ist nun mal so bei diesem Standard, ergo, ist der "höchste" Standard den der IE versteht HTML 4.01. Eine Art das zu erreichen, aber für moderne Browser dennoch nicht auf XHTML verzichten zu müssen, ist mein o.g. Script zu benutzen. Face it! Gruß, Tobias
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.