Ich möchte einen Kommentar (<!-- this -->
Stil) ganz oben in meinem HTML-Code, vor der DOCTYPE-Deklaration. Entspricht das den Standards? Wird es von den wichtigsten Browsern unterstützt? Gibt es Fallen darin?Können Kommentare vor der DOCTYPE-Deklaration angezeigt werden?
Antwort
Schreiben der <!DOCTYPE>
erstens ist sicherlich die beste Praxis.
Ich erinnere mich seltsame Probleme vor langer, langer Zeit, wo einiger Browser (wahrscheinlich IE6) ein <!DOCTYPE>
ignoriert, weil es etwas scheinbar unschuldig, bevor es war - ich denke nur, Leerzeichen, aber vielleicht war es ein Kommentar. In jedem Fall war es ein schrecklicher, schrecklicher Bug, den man aufspüren musste, und es gibt sicherlich keinen guten Grund, Kommentare oder Leerzeichen vor dem <!DOCTYPE>
zu haben.
Schreiben der <!DOCTYPE>
erstens, würde ich sagen, nur etwas erfahrene Web-Entwickler tun, um schreckliche, schwer fassbare Bugs zu vermeiden.
Obwohl es nach dem Standard akzeptabel ist, glaube ich, dass Sie es auf jeden Fall vermeiden wollen, da es den IE in den Quirks-Modus versetzt.
Alles andere als Leerzeichen vor dem DOCTYPE löst IE (6 und 7, mindestens - nicht sicher über 8) in Quirks-Modus. –
Das IE7 verursachen kann im Quirks-Modus zu machen, als ob ein Doctype gar nicht da war, nach this page.
Kommentare vor dem Doctype sind erlaubt, aber verursachen alle IE-Versionen, um zum Quirks-Modus zurückzukehren. Sie werden tatsächlich manchmal für diesen Zweck verwendet. Die XML-Deklaration (<?xml version ...?>
) hat den gleichen Effekt, in IE6 und unter. es bringt alle Versionen von IE in Macken-Modus
Es ist vollgültig
<!-- this, -->
<!DOCTYPE html>
jedoch, zu tun (es sei denn, es in nicht-Quirks-Modus gezwungen ist - siehe den Abschnitt Gotchas Abschnitt unten). Am einfachsten ist es, den Kommentar unterhalb des DOCTYPE zu verschieben.
<!DOCTYPE html>
<!-- this, -->
Aber ein anderer Weg ist, um „Upgrade“ den Kommentar in einem geeignet bedingte Kommentar wie folgt aus:
<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>
Erläuterung: ein bedingte Kommentar tut nicht zählen als Kommentar, in IE's 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 insbesondere IE zu zielen, könnte man tun
<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>
Gotchas
Ein Kommentar innen ein bedingter Kommentar IE bringen in Macken-Modus wenn IE es sieht (das heißt: wenn verwendet man ein [if IE] Zustand oder ein Äquivalent zu [if IE] - etwa die [if! anybrowser] Bedingung, dass ich oben erwähnt habe.). So zum Beispiel würde dies IE bringt im Quirks-Modus:
<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>
Wie würden
<!--[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 DOCTYPE vor anderen Inhalt hat und somit die Auffassung, IE, dass der erste Inhalt der Seite ist ein DOCTYPE.
Schließlich sind die neuesten IE-Versionen, IE8 und IE9 kann sein zu standard Modus gezwungen (und Macken-Modus als auch) durch die Verwendung eines anderen Microsoft Erfindung - die x-ua-kompatibel Direktive. 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 no-Macken Modus, während IE6 und IE7 wird in Macken Modus bleiben. Während im Gegensatz dazu diese
<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>
würde Kraft IE8 und IE9 in Standardmodus, trotz, dass der Inhalt des bedingten Kommentars tut nicht Start mit einem DOCTYPE. Und IE6 und IE7 bleiben auch im Modus "Keine Quirks", da der bedingte Kommentar sie nicht anspricht.
Ich habe vor langer Zeit beschlossen, das ganze Problem zu vermeiden, indem ich meinen Top-Kommentar nach dem DOCTYPE platziere, aber danke für die detaillierte (und faszinierende) Erklärung des Verhaltens von IE. –
A + :) Ich werde dein Wort dafür nehmen - das ist eine unglaublich detaillierte Antwort - danke, ich mag es sehr. Du hast eindeutig nicht im Angesicht des Rabbitholons aufgehört: –
- 1. Können Kommentare vor `use strict;` kommen?
- 2. Wie können Kommentare in Lenkervorlagen verwendet werden?
- 3. TODO: Kommentare werden nicht in der Task-Liste angezeigt
- 4. Express.js: Wie können Kommentare im HTML-Code mit Sqlite und Moustache gepostet und angezeigt werden?
- 5. Inno Setup - Wie werden Release Notes vor der Installation angezeigt?
- 6. Wie Kommentare zur Codeüberprüfung in Visual Studio 2013 angezeigt werden
- 7. Microsoft Graph - Benutzerprofile können nicht angezeigt werden
- 8. Doppelte geschweifte Klammern können nicht angezeigt werden
- 9. Upload von Bilddateien können nicht angezeigt werden
- 10. Die OCR-Ergebnisse können nicht angezeigt werden
- 11. Können die Daten im Speicher der Grafikkarte angezeigt werden?
- 12. Validierungsfehler in der Teilansicht können nicht angezeigt werden
- 13. Daten können nicht aus der Datenbank angezeigt werden
- 14. Mediaview und Square können nicht auf der Grenzfläche angezeigt werden
- 15. Wie können Zeilennummern in der PostgreSQL-Abfrage angezeigt werden?
- 16. Die ausgewählten Elemente in der Listenansicht können nicht angezeigt werden
- 17. Wie können SQL-Abfragen in der Rails-Konsole angezeigt werden?
- 18. Können Modelleigenschaften in einer Vorlage angezeigt werden
- 19. Bootstrap-Tooltips können nicht angezeigt werden
- 20. Sonderzeichen können in HTML nicht angezeigt werden
- 21. Wie können alle mehrzeiligen Kommentare in FDT 4 erweitert werden?
- 22. Pcharm Community Edition: "Frame-Variablen können nicht angezeigt werden"
- 23. OK, um Kommentare vor der XML-Deklaration zu setzen?
- 24. Benutzerkommentare werden nicht auf Google Play angezeigt
- 25. Kann verhindert werden, dass Standard-HTML-Kommentare im Quellcode angezeigt werden?
- 26. SSL-Zertifikate werden kurz vor Ort angezeigt und dann gelöscht
- 27. Wie werden Änderungen an einer Datei vor dem Festschreiben angezeigt?
- 28. Wie drei Ziffern vor dem Dezimalpunkt angezeigt werden?
- 29. Können wir Kommentare in der Tabelle in Oracle DB hinzufügen?
- 30. Wie können Token definiert werden, die in ANTLR4 in mehreren lexikalischen Modi angezeigt werden können?
Danke, ich werde stattdessen meinen Kommentar nach dem HTML-Tag platzieren. –
Es muss vor allem einschließlich kommen, wenn Sie möchten, dass es richtig funktioniert. – nertzy
Das hat mich nur gebissen. Ich habe 4 Stunden damit verbracht, herauszufinden, warum IE7/8 ALLES AUSSERHALB PLATZIERT hat.Nachdem ich jedes einzelne Tag auf korrekte geschweifte Klammern und andere Dinge überprüft hatte, erstellte ich eine neue Datei und kopierte den Code Zeile für Zeile (nicht die Kommentare) und alles funktionierte gut. Völlig verwirrt, dachte ich zufällig "was wäre wenn ...?" als ich die Kommentarzeile direkt vor DOCTYPE in der Originaldatei bemerkte. Da war mein Täter! – dariopy