Nehmen wir an, Sie haben eine Seite mit einem relativ strengen Doctype und HTML-Markup, die nahezu konform ist, aber möglicherweise auf ein paar alberne Arten fehlt, möglicherweise aufgrund von Benutzerinhalten, die außerhalb Ihrer Kontrolle liegen. Angenommen, Sie arbeiten an einem Inhalt Managementsystem oder ein Thema für ein Content-Management-System, bei dem Sie eine grundlegende Struktur steuern und Javascript benötigen, aber nicht für alles andere verantwortlich sind, was in Seiten eingeht.
Wie können Sie feststellen (oder: was wird bestimmen), wann der Browser beschließt, in den "Macken" -Modus zu wechseln, anstatt die standardkonformere Engine zu verwenden?
Ich suche nach Antworten für jeden der wichtigsten Browser, da IE, Chrome, Safari und Firefox dies natürlich alle unterschiedlich handhaben. Reicht ein einziger Fehler aus, um ihn zu erzwingen, oder haben Sie einen gewissen Spielraum?
quelle
Da Sie den Rendermodus in JavaScript abfragen können, können Sie ein Lesezeichen erstellen, das Ihnen anzeigt, welchen Rendermodus eine Seite verwendet.
Ich habe dieses Lesezeichen für den Rendermodus gefunden, das für mich gut funktioniert:
quelle
Die vollständige Antwort auf Ihre aktuelle spezifische Frage: "Reicht ein einzelner Fehler aus, um ihn zu erzwingen, oder haben Sie einen gewissen Spielraum?" ist, dass es total auf den Fehler ankommt. Beispielsweise,
Erzwingt den Quirks-Modus in IE 6 und 7, obwohl dies nicht wirklich ein Fehler ist (sie werfen nur ein totales Wackeln, wenn die allererste Zeile der Datei keine Deklaration ist). Eine kurze Liste der Typen / Macken finden Sie 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 :)
quelle
Laut 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 eine eigene Liste mit Doctypes, die den Quirks-Modus auslösen. Siehe diesen Browser Vergleichstabelle für eine Übersicht dieser Listen: http://hsivonen.iki.fi/doctype/ "
Hoffe das hilft
quelle
Wenn Sie dem IE mitteilen, dass es streng sein soll (über doctype), ändert es seine Meinung nicht zur Hälfte der Seite.
quelle
Wenn ich den Mackenmodus richtig verstehe, reicht eine Seite, die nicht gegen den deklarierten Doctype validiert wird, nicht aus, um den Mackenmodus auszulösen. Es wird einfach nicht richtig angezeigt.
Die beste Ressource, die ich gefunden habe, um festzustellen, wie verschiedene Browser mit jedem Doctype umgehen, ist hier .
quelle
Für das Add-On Firefox mit Web Developer Toolbar können Sie sich die drei Symbole rechts in der Leiste ansehen. Ganz links sehen Sie, in welchem Modus Sie sich befinden.
quelle
Im IE sehen Sie es in den Entwicklertools (drücken Sie F12), es steht im Menü: Dokumentmodus: ... und Sie können dort auch einen anderen Modus erzwingen.
quelle
Schreiben Sie auf der HTML5-Seite "
<!DOCTYPE html>
" Start mit Seite kann sich in document.compatMode = 'CSS1Compat' ändern.quelle