Zum Inhalt springen

Tags in JS


etherius

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen


<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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...