Woran erkennt man, ob sich ein Browser im „Quirks“-Modus befindet?
Lesezeit: 4 Minuten
Joel Coehoorn
Nehmen wir an, Sie haben eine Seite mit einem relativ strengen Dokumenttyp und HTML-Markup, die ziemlich konform ist, aber vielleicht auf ein paar dumme Arten verfehlt, vielleicht wegen Benutzerinhalten, die außerhalb Ihrer Kontrolle liegen … sagen Sie, Sie arbeiten an einem Inhalt Management-System oder ein Thema für ein Content-Management-System, bei dem Sie einige Grundstrukturen steuern und etwas Javascript benötigen, aber nicht für alles andere verantwortlich sind, was in die Seiten einfließt.
Wie können Sie feststellen (oder: was wird bestimmen), wann der Browser sich entscheidet, in den “Macken”-Modus zu wechseln, anstatt seine standardkonformere Engine zu verwenden?
Ich suche nach Antworten für jeden der großen Browser, da IE, Chrome, Safari und Firefox das natürlich alle unterschiedlich handhaben. Reicht ein einziger Fehler aus, um es zu erzwingen, oder haben Sie einen Spielraum?
Chris Ballance
Im Firefox und Opera Sie können feststellen, ob sich Ihr Browser im “Quirks-Modus” befindet, indem Sie die Seiteninformationen überprüfen.
Verwenden document.compatModezeigt Ihnen den Modus an, in dem Sie sich bei den meisten Browsern befinden.
Im Chrome, Safari und IEführen Sie dieses Javascript in der Adressleiste aus:
javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')
(Beachten Sie, dass Sie die Datei erneut eingeben müssen javascript: Teil nach dem Einfügen in Ihre Adressleiste, aufgrund kürzlicher Sicherheitsänderungen)
Es gibt einen weiteren potenziellen Wert im IE, auf den ich gestoßen bin, als ich eine alte Seite in den “EDGE” -Modus gezwungen habe. Der Wert war “BackCompat”
– Gregor Woods
10. Juni 2016 um 11:56 Uhr
Ich habe BackCompat auch in Chrome bekommen, als ich DOCTYPE auf etwas völlig Ungültiges gesetzt habe. Wenn der Wert gemäß dem Code in dieser Antwort etwas anderes als CSS1Compat ist, befindet er sich im Quirks-Modus. Ist das wirklich wahr? Was sind alle möglichen Werte?
Die vollständige Antwort auf Ihre eigentliche spezifische Frage „Reicht ein einziger Fehler, um es zu erzwingen, oder haben Sie einen Spielraum?“ ist, dass es völlig auf den Fehler ankommt. Zum Beispiel,
<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
wird den Quirks-Modus in IE 6 & 7 erzwingen, obwohl es sich nicht wirklich um einen Fehler handelt (sie werfen nur ein totales Wackeln, wenn die allererste Zeile der Datei keine Deklaration ist). Eine schnelle Liste von Typen/Eigenheiten kann gefunden werden Hier
Versuchen Sie, die folgende Zeile zum Testen in Ihren HTML-Code einzufügen (sehr schlechtes Javascript-Verhalten, das ich hier weitergebe – Entschuldigung … stellen Sie sicher, dass dies niemals live geht 🙂
<a href="https://stackoverflow.com/questions/627097/javascript:alert(document.compatMode);">What mode am I?</a>
Danke für den Javascript-Tester, denn meine ersten beiden Versuche, dem Quirks-Modus zu entkommen, haben nicht funktioniert.
– Noumenon
16. Februar 2013 um 16:54 Uhr
css1compat != Quirks-Modus?
– Mike Cole
2. Oktober 2013 um 20:24 Uhr
Entsprechend http://www.quirksmode.org/css/quirksmode.html : “Das Problem war, dass einige Seiten, die im Quirks-Modus geschrieben wurden, Doctypes hatten. Daher hat jeder Browser seine eigene Liste mit Doctypes, die den Quirks-Modus auslösen. Siehe diese Browser-Vergleichstabelle für eine Übersicht dieser Listen: http://hsivonen.iki.fi/doctype/“
Hoffe das hilft
Wenn Sie dem IE mitteilen, dass er streng sein soll (über doctype), wird er seine Meinung nicht auf halbem Weg durch die Seite ändern.
Bill die Eidechse
Wenn ich den Quirks-Modus richtig verstehe, reicht eine Seite, die nicht gegen ihren deklarierten Doctype validiert wird, nicht aus, um den Quirks-Modus auszulösen. Es wird einfach nicht richtig angezeigt.
Die beste Ressource, die ich gefunden habe, um festzustellen, wie verschiedene Browser mit jedem Dokumenttyp umgehen, ist Hier.
Arieleo
Für Firefox mit dem Add-on Web Developer Toolbar können Sie sich das Trio von Symbolen auf der rechten Seite der Leiste ansehen. Der linke zeigt an, in welchem Modus Sie sich befinden.
8575400cookie-checkWoran erkennt man, ob sich ein Browser im „Quirks“-Modus befindet?yes