2012-03-25 6 views

Antwort

3

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.

+0

"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

5

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--> 
+0

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? –

+3

@pop Verwenden Sie einen [html Validator] (http://validator.w3.org/). – nobody

Verwandte Themen