Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tags in JS

Empfohlene Antworten

Veröffentlicht

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

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

Eben diesen Kommentar verwendet man ja nicht mehr ^^

Es muss noch eine andere Möglichkeit geben.

aber trotzdem danke

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

poste bitte mal deinen ganzen Code. Ich denke mal das da Markus ned ganz unrecht hat.

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


<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

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?

Hi,

Und vor allem zumindest versuchen den Kommentar bei JS UND CSS weg zu lassen :)

Warum?!

Gruß,

Markus

ich frag mich, was die eckigen klammern da machen ?!?

ich frag mich, was die eckigen klammern da machen ?!?

Die sind wahrscheinlich nur [Verzierung]

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.

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

Dann validiere es doch bitte einmal als XHTML 1.0 Strict :D

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.

Hm ich denke ich werd das script da einfach komplett raus hauen :P

Geht mir auf die nerven ^^

OK, Du hast es nicht anders gewollt! Jetzt wird's kompliziert: :D

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

*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

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.

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 :P

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

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?

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

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

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

Wenn jetzt noch weitere Seitenhiebe oder Beleidigungen kommen ist der Thread zu.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.