about:blank und der body-tag
Jense
- html
Hallo, folgendes Problem:
Wenn ich (im FF 2) mit window:open(....about:blank...) oder direkt über den Browser ein neues, leeres Fenster öffne, dann hat dies folgende Struktur:
<html>
<head>
<title/>
</head>
<body/>
</html>
Was mich nun irritiert ist <title/> u.v.a. <body/>.
Warum nicht <title></title> etc. ? Was hat das für praktische Auswirkungen? Hintergrund: Das leere Fenster soll durch JS mit Inhalten gefüllt werden - gibt's da grundsätzlich Probleme?
Danke an jeden der zur Aufklärung dieses Falles beitragen kann...
Jense
Mahlzeit Jense,
Was mich nun irritiert ist <title/> u.v.a. <body/>.
Warum nicht <title></title> etc. ?
Weil das das Gleiche ist (zumindest strukturell)?
MfG,
EKKi
Weil das das Gleiche ist (zumindest strukturell)?
der inhalt ist aber nicht der gleiche
<body /> und <body></body> oder <body> </body> haben jeweils andere inhalte - das erste beispiel hat keinen inhalt, er existiert nicht (NULL), das zweite hat einen leerstring (binär, in 8-bit als 00000000 ausgedrückt), das dritte hat ein leerzeichen (binär, 8-bit als 00010100)
Hallo suit,
<body></body>
das zweite hat einen leerstring (binär, in 8-bit als 00000000 ausgedrückt)
häh? Wie kommst du denn darauf? Das ist falsch.
Gruß Uwe
<body></body>
das zweite hat einen leerstring (binär, in 8-bit als 00000000 ausgedrückt)häh? Wie kommst du denn darauf? Das ist falsch.
verzeihung, ich muss ich korrigieren, grade testet mit firefox 2
<body /> liefert bei mir ASCII 0A
<body></body> liefert 00
<body></body> liefert 20
Hallo suit,
ich habe keine Ahnung, wovon du sprichst.
Gruß Uwe
ich habe keine Ahnung, wovon du sprichst.
der <http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-F68D080@wert des knotens> <body />, <body></body> oder <body> </body>
Hallo suit,
ich habe keine Ahnung, wovon du sprichst.
der <http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-F68D080@wert des knotens>
ja, wir reden von »nodeValue«, ich verstehe jetzt aber nicht, inwiefern der Link deine Aussage unterstützen sollte?
Wie kommst du denn zu folgenden Werten?
<body /> liefert bei mir ASCII 0A
Wie kommst du da drauf, das ist falsch.
»x0A« ≡ line feed/newline
»x0A« Ist ein String mit der Länge »1«.
Richtig ist - anschaulich gesprochen - body enthält einen Leerstring, der per Definition die Länge »0« hat.
Deiner Aussage nach, enthält body einen String mit der Länge »1«.
<body></body> liefert 00
Wie kommst du da drauf, das ist falsch.
»x00« ≡ NULL (NUL) - das hat NICHTS mit dem JavaScript »null« zu tun.
»x00« Ist ein String mit der Länge »1«.
Das Zeichen »x00« ist visuell nicht sichtbar, wäre es tatsächlich drin, müsstest du das natürlich visualisieren.
Richtig ist - anschaulich gesprochen - body enthält einen Leerstring, der per Definition die Länge »0« hat.
Ergo: <body /> ≡ <body></body>
Deiner Aussage nach, enthält body einen String mit der Länge »1«.
Deinem Beispiel nach, enthält body einen Leerstring, also Länge »0«.
<body></body> liefert 20
Wie kommst du da drauf, ich "sehe" kein Leerzeichen, das ist falsch.
Du meinst: <body> </body>
Richtig ist - anschaulich gesprochen - body enthält einen String mit einem Zeichen, womit der String die Länge »1« hat.
Ergo: <body /> == <body></body> != <body> </body>
Deiner Aussage nach, enthält body einen String mit der Länge »1«.
Deinem Beispiel nach, enthält body einen Leerstring, also Länge »0«.
Gruß Uwe
Hallo Jense,
...gibt's da grundsätzlich Probleme?
ja, es kann sein, wenn du bsplw. bei »<div/>« einen Kindknoten einhängst, die Verschachtelung nicht korrekt ist.
Gruß Uwe
@@amolip:
ja, es kann sein, wenn du bsplw. bei »<div/>« einen Kindknoten einhängst, die Verschachtelung nicht korrekt ist.
?? Wie willst du in ein leeres Element einen Kindknoten einhängen?
Live long and prosper,
Gunnar
Hallo Gunnar,
?? Wie willst du in ein leeres Element einen Kindknoten einhängen?
warum nicht? Zwischen »<div/>« und »<div></div>« besteht nur ein formaler aber kein inhaltlicher Unterschied.
Live long and prosper,
Das sagt sich so leicht, der Wille ist ja da, aber das Fleisch ... ;-)
Gruß Uwe
@@amolip:
?? Wie willst du in ein leeres Element einen Kindknoten einhängen?
warum nicht? Zwischen »<div/>« und »<div></div>« besteht nur ein formaler aber kein inhaltlicher Unterschied.
(1) Das ist mir klar.
(2) Das beantwortet nicht meine Frage.
Live long and prosper,
Gunnar
Hallo Gunnar,
?? Wie willst du in ein leeres Element einen Kindknoten einhängen?
warum nicht? Zwischen »<div/>« und »<div></div>« besteht nur ein formaler aber kein inhaltlicher Unterschied.
(1) Das ist mir klar.
(2) Das beantwortet nicht meine Frage.
... äh ..., reden wir aneinander vorbei? Ganz banal mit »appendChild()«.
Gruß Uwe
@@amolip:
... äh ..., reden wir aneinander vorbei? Ganz banal mit »appendChild()«.
Vermutlich. Wenn du nachträglich etwas mit JavaScript tust, sollte es völlig egal sein, ob im Markup '<div/>
' oder '<div></div>
' steht.
Einem Tagsoup-Parser fehlt bei '<div/>
' das End-Tag; „Verschachtelung nicht korrekt“ ist völlig unabhängig von irgendwelchem JavaScript.
Live long and prosper,
Gunnar
Hallo Gunnar,
ich stimme dir zu. Du sagst genau das, was ich sagen wollte :-)
Um das mal zusammen zu fassen.
Zwischen »<div/>« und »<div></div>« gibt es weder aus XML-Sicht [1], noch aus DOM-Sicht, noch aus JavaScript-Sicht einen Unterschied. Theoretisch!
Praktisch aber kann es mit »<div/>« Probleme geben. Zwei Faktoren sind dann ursächlich dafür verantwortlich, erstens, ob das Dokument als SGML oder als XML geparst wird und zweitens natürlich der Parser als solcher.
Gruß Uwe
[1] Ich weiß nicht, wie das bei SGML aussieht.