Stefan Muenz: JavaScript Entities vs. HTML-Konformitaet

Beitrag lesen

Liebe Forumer,

es gibt da eine von Netscape 3.x eingefuehrte Technik in JavaScript, die weithin unbekannt geblieben ist - die sogenannten "JavaScript-Entities". Beispiel:
<script>
var Zufallsbreite = Math.round(Math.random()*400);
</script>
<hr width="&{Zufallsbreite};">

Ueber Sinn und Unsinn dieser Technik im DOM-Zeitalter, die ausserdem in keinem modernen Browser funktioniert, moechte ich jetzt nicht weiter diskutieren. Was ich fragen moechte ist eher: wie steht es dabei mit der Konfliktaustragung mit dem HTML-Parser? Dieser erwartet ja nun beim width-Attribut eine Pixel- oder Prozent-Angabe, aber keinen String, der mit einem "&{...." beginnt. Korrekt waere die Sache allenfalls, wenn der JavaScript-Interpreter ein vorgeparstes Dokument an den HTML-Parser uebergibt (also fast ein bissschen PHP-maessig), wo dann ein aus Sicht des HTML-Parsers korrekter Wert beim width-Attribut eingetragen ist.

Der folgende Test ergab, dass bei Verwendung von HTML 4.01 Strict der W3-Validator tatsaechlich zufrieden ist:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Test</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head><body>
<script type="text/javascript">
var Border = 1;
</script>
<table border="&{Border};"><tr><td> </td></tr></table>
</body></html>

Obwohl der Parser des Validators bei border= eine Pixelangabe erwartet, frisst er die Angabe "&{Border};". Frage nun: wertet der HTML-Parser einfach nur die Wertzuweisung nicht genau genug aus? Und sind JavaScript-Entities, in dieser Form verwendet, tatsaechlich HTML-konform?

viele Gruesse
  Stefan Muenz