StattSind die Tags/Kommentare in HTML von Browsern automatisch korrigiert?
<!--
,
benutzte ich
<!-
... und es funktioniert.
Wie?
StattSind die Tags/Kommentare in HTML von Browsern automatisch korrigiert?
<!--
,
benutzte ich
<!-
... und es funktioniert.
Wie?
Moderne Browser Parser (das heißt jene, die die HTML5-Parsing-Algorithmus verwenden) wie folgt arbeiten. Wenn sie als nächstes Text oder ein neues Tag erwarten und sie <!
sehen, dann prüfen sie die nächsten paar Zeichen, um zu sehen, ob sie --
oder DOCTYPE
sind oder, wenn sie eingebettetes SVG oder MathML verarbeiten, [CDATA[
. (Siehe http://dev.w3.org/html5/spec/tokenization.html#markup-declaration-open-state)
Wenn, wie im Fall von <!- foo
, keines dieser Partie tritt dann in dem Parser die bogus comment state, wo alle Zeichen nach, bis zum nächsten >
, werden gelesen und und in einen Kommentar gesetzt zu werden in das DOM.
Daher das Verhalten, das Sie mit <!-
arbeiten wie ein Kommentar starten. Beachten Sie, dass ein solches Verhalten für beschädigtes Markup-Verhalten "Reparaturverhalten" ist, und es sinnvoll ist, sich nicht darauf zu verlassen.
können Sie sehen, wie solche Auszeichnungs hier ein DOM bildet: Live DOM Viewer
Beachten Sie auch, dass dies anders ist, was @Amber sagt. Es wird nicht als ein Tag in einem sinnvollen Sinn behandelt, und es wird sicherlich nicht ignoriert.
Es funktioniert nicht wirklich - es interpretiert es nur als tatsächliches Tag und verwirft es dann als ungültig.
<!- foo bar -->
wird als Tag behandelt, <!-foo bar-->
, die offensichtlich kein Standard-HTML-Tag ist, und somit ignoriert.
Versuchen Sie dies, und du wirst sehen, es nicht wirklich ist als Kommentar arbeiten:
<!- >foo bar-->
Dies führt zu einer weiteren Frage: Wenn Kommentare nicht vom Compiler/Interpreter gelesen werden können, Wie testen wir, dass es gelesen zu werden (natürlich, wie in meinem Beispiel) nicht? –
@pop Verwenden Sie einen [html Validator] (http://validator.w3.org/). – nobody
"Behandelt als ein Tag" in dem Sinne, dass es bis zum nächsten '>' (welches das abschließende Zeichen für ein Tag ist) analysiert wird, anstatt dem nächsten '->' (welches das abschließende Zeichen für einen Kommentar ist) . "Ignoriert" in dem Sinne, dass es als Kommentar verwendet wird, anstatt den Text der angezeigten Seite zu beeinflussen. – Amber