Browser fügt Tags hinzu
wilmaed
- html
Hallo,
Firefox/Chrome/IE machen aus 1 p
Element, zwei p
Elemente:
<p>
<div> a </div> <div> b </div> <div> c </div>
</p>
Mit Verwunderung habe ich festgestellt, dass Browser well-formed HTML eigenständig verändern. Im Beispiel wird aus <p>
ein <p></p>
und aus </p>
ein <p></p>
.
Gibt es eine Seite, auf der solche Manipulationen aufgezählt werden? Eine Korrektur ist es nicht, da well-formed .…
Bemerkt habe ich es, da mein CSS Selektor nicht greift (div
nicht mehr Kind von p
).
Vielen Dank
Hallo
Da div-Elemente nicht in p-Elementen sein dürfen ist da überhaupt nichts korrekt, egal wie du das umschreibst.
Wobei Text auch nie direkt in div-Elementen (oder ähnlichen Containern) stehen sollte, die nichtz für Text gedacht sind. Also gleich ein zweites Problem in deinem kurzen Quelltext.
Gruss
MrMurphy
Servus!
Siehe hier: HTML/Tutorials/HTML & CSS mit dem Seiteninspektor untersuchen #Blockelemente in p
Herzliche Grüße
Matthias Scharwies
Hallo wilmaed,
<p> <div> a </div> <div> b </div> <div> c </div> </p>
Mit Verwunderung habe ich festgestellt, dass Browser well-formed HTML eigenständig verändern. Im Beispiel wird aus
<p>
ein<p></p>
und aus</p>
ein<p></p>
.Eine Korrektur ist es nicht, da well-formed .…
Nix „well-formed“. p
darf nur phrasing-content enthalten.
<p></p>
<div> a </div> <div> b </div> <div> c </div>
<p></p>
Bis demnächst
Matthias
@@Matthias Apsel
Nix „well-formed“.
Natürlich nicht. HTML kann nicht well-formed sein. Es kann auch nicht nicht well-formed sein. Das Konzept well-formed existiert in HTML überhaupt nicht.
Das Konzept well-formed gibt es im XML-Umfeld. Also auch für XHTML. Und natürlich ist <p><div>a</div></p>
wohlgeformtes XHTML.
LLAP 🖖
Das Konzept well-formed gibt es im XML-Umfeld. Also auch für XHTML. Und natürlich ist
<p><div>a</div></p>
wohlgeformtes XHTML.
ok.
https://wiki.selfhtml.org/wiki/Referenz:HTML/Stil-Elemente
danke, das hab ich gesucht.
LLAP 🖖
heute (bzw morgen) ist Discovery e0105 😀👽
@@wilmaed
Mit Verwunderung habe ich festgestellt, dass Browser well-formed HTML eigenständig verändern.
Es gibt weder well-formed HTML noch nicht well-formed HTML. S.a. Antwort an Matthias.
Genau gesagt verändern Browser kein HTML, sondern generieren aus den HTML ein anderes DOM als du beabsichtigt hast.
Im Beispiel wird aus
<p>
ein<p></p>
Da div
nicht in p
vorkommen darf, wird das p
geschlossen, bevor das div
geöffnet wird.
und aus
</p>
ein<p></p>
.
Da bin ich auf die Schnelle nicht fündig geworden …
Gibt es eine Seite, auf der solche Manipulationen aufgezählt werden?
… irgendwo in den Untiefen von Kapitel 8.2. Parsing HTML documents
Eine Korrektur ist es nicht, da well-formed .…
Doch, es ist eine Korrektur. Das Konzept well-formed gibt es in HTML nicht.
Bemerkt habe ich es, da mein CSS Selektor nicht greift (
div
nicht mehr Kind vonp
).
Natürlich nicht, s.o.
LLAP 🖖
Aloha ;)
Im Beispiel wird aus
<p>
ein<p></p>
Da
div
nicht inp
vorkommen darf, wird dasp
geschlossen, bevor dasdiv
geöffnet wird.und aus
</p>
ein<p></p>
.Da bin ich auf die Schnelle nicht fündig geworden …
Naja. Die Umwandlung von <p>
nach <p></p>
hast du ja schon erläutert - und wenn der Parser dann über die ganzen <div>
-Teile, die vom Autor innerhalb des Absatzes notiert wurden, drüber ist, stolpert er dann über das schließende </p>
- und da er ja aufgrund seiner eigenen Fehlerkorrektur gar kein geöffnetes p
-Element mehr auf dem Schirm hat, das er schließen kann, macht er eben auch an der Stelle Fehlerkorrektur und fügt das seiner Logik nach fehlende <p>
einfach ein. Und so wird dann auch aus </p>
ein <p></p>
.
Der Browser spielt quasi mit seiner eigenen Fehlerkorrektur Stille Post.
Grüße,
RIDER
@@Camping_RIDER
und wenn der Parser dann über die ganzen
<div>
-Teile, die vom Autor innerhalb des Absatzes notiert wurden, drüber ist,
Es gibt keine <div>
-Teile innerhalb des Absatzes.
… stolpert er dann über das schließende
</p>
- und da er ja aufgrund seiner eigenen Fehlerkorrektur gar kein geöffnetesp
-Element mehr auf dem Schirm hat, das er schließen kann, macht er eben auch an der Stelle Fehlerkorrektur und fügt das seiner Logik nach fehlende<p>
einfach ein. Und so wird dann auch aus</p>
ein<p></p>
.
Nein, deine Erklärung ist falsch.
Danach müsste ein Browser aus
<p>
<div>a</div>
</article>
ja
<p></p>
<div>a</div>
<article></article>
machen. Weder Firefox noch Safari noch Chrome tut das.
LLAP 🖖
Aloha ;)
und wenn der Parser dann über die ganzen
<div>
-Teile, die vom Autor innerhalb des Absatzes notiert wurden, drüber ist,Es gibt keine
<div>
-Teile innerhalb des Absatzes.
Das habe ich auch nicht geschrieben. Genau lesen. Ich hab noch mal hervorgehoben, weil mir diese Spitzfindigkeit schon im Moment des Schreibens bewusst war.
Danach müsste ein Browser aus
<p> <div>a</div> </article>
ja
<p></p> <div>a</div> <article></article>
machen. Weder Firefox noch Safari noch Chrome tut das.
Nicht unbedingt. Es ist gut möglich, dass der Browser unvermittelt gefundene schließende Tags bei unterschiedlichen Elementen unterschiedlich behandelt. Aber ich gebe dir Recht, dass es dafür noch eine Begründung geben muss, die ich bisher auch nicht geliefert habe.
Grüße,
RIDER
Aloha ;)
Es ist gut möglich, dass der Browser unvermittelt gefundene schließende Tags bei unterschiedlichen Elementen unterschiedlich behandelt.
...und genauso ist es auch. Ein alleinstehendes </article>
wird ignoriert, ein alleinstehendes </p>
wird zum <p></p>
ergänzt.
Warum das genau der Fall ist, dass haben sich vor uns schon andere gefragt.
Die Antwort (von da geklaut) liegt in der HTML5-Spec:
If the stack of open elements does not have an element in button scope with the same tag name as that of the token, then this is a parse error; act as if a start tag with the tag name "p" had been seen, then reprocess the current token.
Demnach muss der Parser spec-gemäß für die Fehlerbehandlung eines jeden gefundenen einzeln stehenden End-Tags in den Kontext eines geöffneten <p>
wechseln - und eben da kommt das her, was noch nötig ist, um das </p>
zu <p></p>
zu ergänzen.
@Edit: hier ist die entsprechende Stelle und da steht auch, dass ein </article>
ignoriert werden soll.
Wieder was dazugelernt - Danke für den Hinweis, dass meine naive Erklärung nicht das Ende der Fahnenstange war.
Grüße,
RIDER
@@Camping_RIDER
Das habe ich auch nicht geschrieben. Genau lesen. Ich hab noch mal hervorgehoben, weil mir diese Spitzfindigkeit schon im Moment des Schreibens bewusst war.
ich habe genau gelesen, was du geschrieben hast. Du hast ungenau formuliert – das geht insbesondere bei Spitzfindigkeiten nach hinten los.
LLAP 🖖
Aloha ;)
Das habe ich auch nicht geschrieben. Genau lesen. Ich hab noch mal hervorgehoben, weil mir diese Spitzfindigkeit schon im Moment des Schreibens bewusst war.
ich habe genau gelesen, was du geschrieben hast. Du hast ungenau formuliert – das geht insbesondere bei Spitzfindigkeiten nach hinten los.
...wenn du findest, dass uns das in irgendeiner Form weiter bringt, dann lass ich das gerne so stehen...?!
Grüße,
RIDER
Hallo Gunnar,
Es gibt weder well-formed HTML noch nicht well-formed HTML.
So weit, so klar. Wie wäre denn der terminus technicus für spec-konformes HTML?
Rolf
Hallo Rolf B,
So weit, so klar. Wie wäre denn der terminus technicus für spec-konformes HTML?
valide.
Bis demnächst
Matthias