Woran erkennt man, ob sich ein Browser im „Quirks“-Modus befindet?

Lesezeit: 4 Minuten

Woran erkennt man ob sich ein Browser im „Quirks Modus befindet
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?

Woran erkennt man ob sich ein Browser im „Quirks Modus befindet
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?

    – still_dreaming_1

    16. September 2016 um 19:25 Uhr


  • Anscheinend ist BackCompatible der Standardwert für den Modus “Quirks” / “Kompatibilität”. Es gibt nur die 2 Werte: developer.mozilla.org/en-US/docs/Web/API/Document/compatMode

    – still_dreaming_1

    16. September 2016 um 19:47 Uhr

  • Es ist schwieriger als früher, zu den Firefox-Seiteninformationen zu gelangen. Die Der einfachste Weg ist jetzt Strg + I.

    – Krubo

    20. September 2021 um 6:59 Uhr

Da Sie den Rendermodus in JavaScript abfragen können, können Sie eine Lesezeichen die Ihnen sagen, welchen Rendermodus eine Seite verwendet.

ich fand dieses Lesezeichen für den Rendermodus was bei mir gut funktioniert:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

1645827727 352 Woran erkennt man ob sich ein Browser im „Quirks Modus befindet
Steerpike

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.

1645827728 921 Woran erkennt man ob sich ein Browser im „Quirks Modus befindet
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.

1645827729 706 Woran erkennt man ob sich ein Browser im „Quirks Modus befindet
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.

857540cookie-checkWoran erkennt man, ob sich ein Browser im „Quirks“-Modus befindet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy