2016-07-22 16 views
0

Google Chrome (und wahrscheinlich alle neueren Browser) fügt automatisch das schließende Tag von HTML-Elementen hinzu, wenn sie fehlen. Es wird automatisch das schließende Tag am Ende des Elements Eltern hinzugefügt.Überspringen von html schließenden Tags

Beispiel 1:

<tag1>content1<tag2>content2<tag3>content3 

ausgegeben:

<tag1> 
    content1 
    <tag2> 
     content2 
     <tag3> 
      content3 
     </tag3> 
    </tag2> 
</tag1> 

Beispiel 2:

<tag1>content1<tag2>content2</tag2><tag3>content3 

Will Ausgang:

<tag1> 
    content1 
    <tag2> 
     content2 
    </tag2> 
    <tag3> 
     content3 
    </tag3> 
</tag1> 

Ich weiß, dass die bisherigen HTML-Beispiele sind ungültig und schwer zu lesen. Aber das Entfernen von abschließenden HTML-Tags nach dieser Regel mit einem HTML-Minifier könnte die Größe der Vorlagen reduzieren. Warum werden HTML-Minifier nicht mit dieser Regel verwendet? Gibt es Einschränkungen?

Edit:Kontext: Ich spreche nicht über jedes Namensschild insbesondere, das ist, warum ich tagX in meinen Beispielen verwendet. Z.B. mit angularjs elementdirektiven

+0

Sie sind ungültig, weil Sie anstelle von HTML formatierte Elemente verwenden. Einige Elemente haben optionale End-Tags (und einige haben optionale Start-Tags) und können absolut gültig sein. – Quentin

+0

Wir können Ihnen nicht sagen, warum ein HTML-Minifier die optionalen Tag-Regeln nicht nutzt, weil Sie uns nicht gesagt haben, über welche Software Sie sprechen (und die Antwort wäre wahrscheinlich entweder "weil Sie nicht gesetzt haben die richtigen Optionen "oder" wie sollten wir wissen, fragen Sie den Autor "auf jeden Fall) – Quentin

+0

Warum kümmert es dich überhaupt ein paar Dutzend Bytes zu speichern? Fügen Sie Ihrer Navigation ein neues Symbol hinzu und alle Einsparungen werden gelöscht. –

Antwort

1

Gute Beobachtung. Dies wurde von Firefox seit langer Zeit gemacht, und es hilft Entwicklern mit Semantik. Aber das Problem, auf das wir stoßen, ist das, was wir gerade erwähnt haben. Firefox, Chrome. Aber was macht der IE? Oder Screenreader? Ich weiß, Safari macht das nicht auf dem gleichen Level wie FF und Chrome.

Es kommt auf Browser-Unterstützung und einen allgemeinen globalen Konsens über gültige HTML. Wenn wir einen Blueprint anstelle von browserspezifischen Implementierungen verwenden, können wir die Webtechnologie sicherer auf alten und neuen Geräten ausführen, die ihre Parser nicht ausfallssicher halten.

+2

Browser waren relativ konsistent, weil sie lange mit ungültigem HTML umgehen. HTML 5 enthält Parserregeln, die dafür sorgen, dass sie * mehr * konsistent werden. Viele Elemente haben explizit optionale End-Tags, so dass es nicht einmal ein ungültiger HTML-Code ist, zu dem die Frage gehört (leider sind die angegebenen Beispiele nicht [MCVE] s) – Quentin

+0

Soweit mir Screenreadern ist mir damit nichts bekannt das rohe HTML. Nur die APIs, die ihnen von Browsern zur Verfügung gestellt werden. – Quentin

+0

@Quentin Das ist was ich meine. "relativ konsistent" und nicht zu wissen, die Fähigkeiten der Geräte, die auf den Markt kommen, ist bereits eine gute Sache, um über alle Standards zu bleiben. Bildschirmleser im Allgemeinen verlassen sich auf gültiges HTML, um zu arbeiten. Abhängig davon, wie fortgeschritten der Geräte-Browser ist, kann dies fail-safe-html enthalten oder nicht, schließende Tags für dich oder das Reparieren deiner Block- oder Inline-Elemente, die Firefox viel gemacht hat, aber Safari nicht. Sich auf bestimmte Browserimplementierungen verlassen, die möglicherweise "relativ konsistent" sind, unterstützt nicht 100%. –