🤭LOL!: p ∈ block-level

problematische Seite

sagt jedenfalls MDN:

Note: Be aware that block-level elements like <p> will be automatically closed if another block-level element is nested inside and therefore parsed before the closing </p> tag.

https://developer.mozilla.org/en-US/docs/Web/API/DOMParser

  1. problematische Seite

    Hallo 🤭LOL!,

    die Formulierung ist leicht veraltet, ja, Inline- und Block-Level sind HTML4 Duktus. In HTML5 spricht man von Inhaltskategorien und erlaubtem Inhalt (teils explizit, teils kategoriebasiert) bzw. von erlaubten Elternelementen.

    Findet der Parser eine Elementschachtelung, die nicht erlaubt ist, kann er das gerade offene Element schließen.

    Wie weit er damit im Detail geht, weiß ich jetzt auch nicht genau, aber wenn ich bspw. ein p und ein b Element offen habe und in das b Element ein p setzen will, wird er das offene b und p schließen. Das ist teils sogar als Komfortfeature vorgesehen: wenn ich 5 Absätze hintereinander in ein div schreiben will, muss ich keinen davon schließen, das <p> reicht, und das ist kein Markup-Fehler.

    Wieviel er schließt, wenn ich ein <li> setze, ohne eine Liste begonnen zu haben, weiß ich nicht. Das ist dann kein Komfortfeature, sondern ein echter Fehler und wie/ob dessen Handling spezifiziert oder dem Browser überlassen ist, müsste ich nachlesen.

    Also kein Grund zu spöttischer Heiterkeit. Es sei denn, ich übersehe den Punkt, der dich amüsiert.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. problematische Seite

      @@Rolf B

      Wieviel er schließt, wenn ich ein <li> setze, ohne eine Liste begonnen zu haben, weiß ich nicht. Das ist dann kein Komfortfeature, sondern ein echter Fehler und wie/ob dessen Handling spezifiziert oder dem Browser überlassen ist, müsste ich nachlesen.

      Das Wie, ja. Das müsste ich auch.

      Das Ob nicht. Das war ja gerade (neben ein paar neuen Elementen und Attributen) die Neuerung in HTML5: Dass HTML nicht mehr über eine Grammatik (DTD bei SGML/XML) definiert wird, sondern über eine Maschine, d.h. über die Regeln, nach denen ein Browser (bzw. anderer Client) eine HTML-Ressource zu parsen hat.

      TL;DR: Alle Browser erstellen aus demselben HTML (wie fehlerhaft das auch sein mag) dasselbe DOM. (Sollte einer da aus dem Rahmen fallen, ist er prähistorisch oder kaputt.)

      🖖 Live long and prosper

      --
      “In my home, the America I love, the America I've written about, that has been a beacon of hope and liberty for 250 years, is currently in the hands of a corrupt, incompetent and treasonous administration. Tonight, we ask all who believe in democracy and the best of our American spirit, to rise with us, raise your voices against authoritarianism, and let freedom reign.”
      — Bruce Springsteen, Manchester 2025-05-14