Frage

Ich mag einen Kommentar (<!-- this --> Stil) platzieren an der Spitze meines HTML-Code, vor der DOCTYPE-Deklaration. Gilt dies auch für die Standards entsprechen? Ist es von den großen Browsern unterstützt? Gibt es irgendwelche Gefahren in dies zu tun?

War es hilfreich?

Lösung

Das Schreiben der <!DOCTYPE> erstes ist sicherlich beste Praxis.

Ich erinnere mich seltsame Probleme vor langer, langer Zeit, wo einige Browser (wahrscheinlich IE6) ignoriert ein <!DOCTYPE> , weil es etwas scheinbar unschuldig, bevor es war - ich glaube, nur Leerzeichen, aber vielleicht war es ein Kommentar . Auf jedem Fall war es einen schrecklichen, schrecklichen Fehler zu haben, ausfindig zu machen, und es gibt sicherlich nie einen guten Grund Kommentare oder Leerzeichen zu haben, bevor die <!DOCTYPE> .

Das Schreiben der <!DOCTYPE> zuerst, ich würde sagen, nur etwas erleben Web-Entwickler schrecklich, schwer Fehler zu vermeiden tun.

Andere Tipps

Es ist vollgültig tun

<!-- this, -->
<!DOCTYPE html>

Doch bringt alle Versionen von IE in Macken-Modus (es sei denn, es ist gezwungen in nein -quirks Modus - siehe die Gotchas unten). Am einfachsten ist es, den Kommentar unterhalb der DOCTYPE zu bewegen.

<!DOCTYPE html>
<!-- this, -->

Aber eine andere Art und Weise ist es, „Upgrade“ Kommentar in ein geeignet bedingte Kommentar, wie folgt aus:

<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>

. Erklärung: a bedingter Kommentar nicht count als Kommentar, in IE Welt

Alternative Syntax: vergessen / nicht vergessen, dass bedingte Kommentare ein Microsoft Eindringen in den HTML-Standard sind, könnte man zum Beispiel tun

<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>

Ebenso IE insbesondere zum Ziel, könnte man tun

<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>

Gotchas

Ein Kommentar innen ein bedingter Kommentar IE bringt in Macken-Modus , wenn IE sieht es (das heißt: , wenn one verwendet < strong> [if IE] Bedingung oder ein Äquivalent zu [if IE] - wie die [if anybrowser!] Bedingung, die ich oben erwähnt).. So zum Beispiel, würde dies IE bringt im Quirks-Modus:

<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>

Wie würde

<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>

und viele andere Varianten. Während zum Beispiel

<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>

würde nicht Ursache Macken-Modus, weil hier der bedingte Kommentar hat eine DOCTYPE vor jeder andere Inhalt und damit IE die Auffassung, dass der erste Inhalt der Seite ein DOCTYPE ist.

Schließlich werden die neuesten IE-Versionen, IE8 und IE9 kann sein gezwungen auf Standards-Modus (und Macken-Modus als auch) durch die Verwendung eines anderen Microsoft Erfindung - die x-ua-kompatibel Richtlinie. Siehe http://msdn.microsoft.com/en-us/library/ cc288325 (v = VS.85) aspx In diesem Fall dann

<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->

wird Kraft IE8 und IE9 in Nein-Macken Modus, während IE6 und IE7 wird in Macken bleiben Modus. Während im Gegensatz dazu dieses

<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>

würden Kraft IE8 und IE9 in Standardmodus, trotz , dass der Inhalt des bedingten Kommentars nicht nicht mit einem DOCTYPE beginnen. Und IE6 und IE7 werden auch in keinem Quirks-Modus bleiben, da der bedingte Kommentar ist sie nicht Ziel.

Es ist zwar akzeptabel pro Standard Ich glaube, Sie wollen auf jeden Fall zu vermeiden, da es IE in Quirks-Modus werfen werden.

(Siehe Auslösen verschiedene Darstellungsmodi )

Das kann IE7 verursachen im Quirks-Modus zu machen, als ob ein Doctype nicht dort überhaupt war, nach diese Seite .

Kommentare vor dem Doctype sind erlaubt, aber dazu führen, alle IE-Versionen zu Quirks-Modus zurückzukehren. Sie sind eigentlich manchmal für diesen Zweck verwendet. Die XML-Deklaration (<?xml version ...?>) hat die gleiche Wirkung, in IE6 und unten .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top