wilmaed: Browser fügt Tags hinzu

problematische Seite

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

akzeptierte Antworten

  1. problematische Seite

    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

  2. problematische Seite

    Servus!

    Siehe hier: HTML/Tutorials/HTML & CSS mit dem Seiteninspektor untersuchen #Blockelemente in p

    Herzliche Grüße

    Matthias Scharwies

    --
    Es gibt viel zu tun: ToDo-Liste
  3. problematische Seite

    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

    --
    Rosen sind rot.
    1. problematische Seite

      @@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 🖖

      --
      “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      1. problematische Seite

        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 😀👽

  4. problematische Seite

    @@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 von p).

    Natürlich nicht, s.o.

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. problematische Seite

      Aloha ;)

      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 …

      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 a.k.a. Riders Flame a.k.a. Janosch Zoller
      # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
      1. problematische Seite

        @@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ö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>.

        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 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        1. problematische Seite

          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

          --
          Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
          # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
          1. problematische Seite

            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 a.k.a. Riders Flame a.k.a. Janosch Zoller
            # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
          2. problematische Seite

            @@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 🖖

            --
            “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
            1. problematische Seite

              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

              --
              Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
              # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
    2. problematische Seite

      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

      --
      sumpsi - posui - clusi
      1. problematische Seite

        Hallo Rolf B,

        So weit, so klar. Wie wäre denn der terminus technicus für spec-konformes HTML?

        valide.

        Bis demnächst
        Matthias

        --
        Rosen sind rot.