robertroth: Browserverhalten bei DOM-Fehler

Liebe Mitdenker, liebe Wissende, liebe Neugierige,

ich bastel immer noch mit den PHP-DOM-Klassen herum. Im Moment versuche ich gerade die Härte der KJlasse zu testen, indem ich Fehler im HTML (DOM) einbaue und die Reaktion der Klasse teste.

Ich bekomme bei doppelten Attributen in einem Element:

Warning: DOMDocument::loadHTML(): Attribute alt redefined in Entity, line: 63 in C:\Programme\Xampp\html-parser\domdocument.class\domlist.php on line 87

Das ist auch richtig so, weil dort steht:

<div id="right"><img alt="Teufel" src="waldhexe.jpg" alt="Waldhexe"></div>	

Das Alt-Attribut ist also doppelt vorhanden.

In die Attributliste der Node wird nur das erste Vorkommen des Alt-Attributes, also das mit dem Wert "Teufel" aufgenommen. Die vier getesteten Browser scheinen es ähnlich zu machen, denn sie zeigen bei Fehlen des Bildes den Text "Teufel" an.

PRIMA

Aber ist dieses Verhalten irgendwo (RFC?) als Standard festgeschrieben oder machen die das nur aus lauter Nettigkeit alle fünf gleich?

  • DOMDocument Klasse aus PHP 5.4.22 (Xampp)
  • Firefox 37.0.2
  • IE 8.0.6001
  • IceWeasel 31.6.0
  • "aktueller" Android-4.4.2-Browser

Ich weiß jetzt leider nicht, wie und wo ich danach suchen kann. Bisher fand ich nur, wie es richtig sein muss, aber nicht, wie der Browser sich bei Fehlern verhalten soll. Kann mir da einer einen Hinweis geben?

Spirituelle Grüße
Euer Robert
robert.r@online.de

--
Möge der wahre Forumsgeist ewig leben!
  1. @@robertroth

    In die Attributliste der Node wird nur das erste Vorkommen des Alt-Attributes, also das mit dem Wert "Teufel" aufgenommen. […] Aber ist dieses Verhalten irgendwo (RFC?) als Standard festgeschrieben

    Ja. HTML5 beschreibt nicht nur die Grammatik der Sprache, sondern eben auch das Verhalten der Parser (Browser).

    Ich weiß jetzt leider nicht, wie und wo ich danach suchen kann.

    In der HTML5-Spec. 8.2 Parsing HTML documents

    Bisher fand ich nur, wie es richtig sein muss, aber nicht, wie der Browser sich bei Fehlern verhalten soll. Kann mir da einer einen Hinweis geben?

    Ebenda nach „attribute“ gesucht führt zu:

    “[…] the complete attribute’s name must be compared to the other attributes on the same token; if there is already an attribute on the token with the exact same name, then this is a parse error and the new attribute must be removed from the token.” [§8.2.4.35]

    LLAP

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Lieber Gunnar liebe Mitdenker, liebe Wissende, liebe Neugierige,

      In die Attributliste der Node wird nur das erste Vorkommen des Alt-Attributes, also das mit dem Wert "Teufel" aufgenommen. […] Aber ist dieses Verhalten irgendwo (RFC?) als Standard festgeschrieben

      Ja. HTML5 beschreibt nicht nur die Grammatik der Sprache, sondern eben auch das Verhalten der Parser (Browser).

      Ich weiß jetzt leider nicht, wie und wo ich danach suchen kann.

      In der HTML5-Spec. 8.2 Parsing HTML documents

      Bisher fand ich nur, wie es richtig sein muss, aber nicht, wie der Browser sich bei Fehlern verhalten soll. Kann mir da einer einen Hinweis geben?

      Ebenda nach „attribute“ gesucht führt zu:

      “[…] the complete attribute’s name must be compared to the other attributes on the same token; if there is already an attribute on the token with the exact same name, then this is a parse error and the new attribute must be removed from the token.” [§8.2.4.35]

      Danke für die gute Info.

      Jetzt habe ich nur das nächste generlle Problem mit diesem Forum: Wie nehme ich diese Info jetzt zu meiner Doku hinzu? Der Link wird ja nicht angezeigt. Und wenn ich nun die Ansicht vom Posting mit Copy und Paste in meine Doku ziehe, fehlt der später.

      Spirituelle Grüße
      Euer Robert
      robert.r@online.de

      --
      Möge der wahre Forumsgeist ewig leben!
      1. Hallo robertroth,

        Jetzt habe ich nur das nächste generlle Problem mit diesem Forum: Wie nehme ich diese Info jetzt zu meiner Doku hinzu? Der Link wird ja nicht angezeigt. Und wenn ich nun die Ansicht vom Posting mit Copy und Paste in meine Doku ziehe, fehlt der später.

        • Du könntest "antworten" wählen und den Text der Textarea in deine Doku ziehen.
        • Du könntest folgendes user-css verwenden: .posting-content a::after {content: attr(href)}

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

          Hallo robertroth,

          Jetzt habe ich nur das nächste generlle Problem mit diesem Forum: Wie nehme ich diese Info jetzt zu meiner Doku hinzu? Der Link wird ja nicht angezeigt. Und wenn ich nun die Ansicht vom Posting mit Copy und Paste in meine Doku ziehe, fehlt der später.

          • Du könntest "antworten" wählen und den Text der Textarea in deine Doku ziehen.
          • Du könntest folgendes user-css verwenden: .posting-content a::after {content: attr(href)}

          Danke, das hilft. In Gunnars Antwort war es ja noch übersichtlich, aber wenn es mehr Links sind, übersehe ich das schon la und ärger mich dann später.

          Spirituelle Grüße
          Euer Robert
          robert.r@online.de

          --
          Möge der wahre Forumsgeist ewig leben!
          1. Hallo robertroth,

            • Du könntest folgendes user-css verwenden: .posting-content a::after {content: attr(href)}

            Danke, das hilft. In Gunnars Antwort war es ja noch übersichtlich, aber wenn es mehr Links sind, übersehe ich das schon la und ärger mich dann später.

            .thread-message .posting-content a {
              font-size: 0; 
              text-decoration: none;
              padding-bottom: .1rem; 
              border-bottom: 2px solid;
            }
            
            .posting-content a::after {
              content: attr(href);
              font-size: 1.05rem;
            }
            
            .posting-content a[href*='wiki.selfhtml.org']::after {
              content: "(Wikiseite)";
            }
            
            .posting-content a[href*='forum.selfhtml.org/self/']::after,
            .posting-content a[href*='forum.selfhtml.org/meta/']::after {
              content: "(Forumsbeitrag)";
            }
            

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.