Załóżmy, że masz stronę ze stosunkowo ścisłym typem dokumentu i znacznikami HTML, które są dość bliskie zgodności, ale być może brakuje na kilka głupich sposobów, być może z powodu zawartości użytkownika, na którą nie masz kontroli ... powiedzmy, że pracujesz nad treścią system zarządzania lub motyw systemu zarządzania treścią, w którym kontrolujesz podstawową strukturę i potrzebujesz trochę javascript, ale nie jesteś odpowiedzialny za wszystko inne, co znajduje się na stronach.
Jak możesz stwierdzić (lub: co to określi), kiedy przeglądarka zdecyduje się przejść w tryb „dziwactw” zamiast używać silnika bardziej zgodnego ze standardami?
Szukam odpowiedzi dla każdej z głównych przeglądarek, ponieważ IE, Chrome, Safari i Firefox będą oczywiście obsługiwać to inaczej. Czy wystarczy jeden błąd, aby to wymusić, czy też masz jakąś swobodę?
źródło
Ponieważ możesz zapytać o tryb renderowania w JavaScript, możesz mieć Bookmarklet, który powie ci, jakiego trybu renderowania używa strona.
Znalazłem ten bookmarklet trybu renderowania, który działa dobrze dla mnie:
javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');
źródło
Pełna odpowiedź na Twoje konkretne pytanie: „Czy wystarczy jeden błąd, aby go wymusić, czy masz jakąś swobodę?”. jest to, że zależy to całkowicie od błędu. Na przykład,
<!-- Comment --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
wymusi tryb dziwactwa w IE 6 i 7, mimo że tak naprawdę nie jest błędem (po prostu rzucają całkowite wahanie, gdy pierwsza linia pliku nie jest deklaracją). Krótką listę typów / dziwactw można znaleźć tutaj
Spróbuj umieścić następujący wiersz w kodzie HTML do testów (bardzo źle zachowuje się javascript, które tu przekazuję - przepraszam ... upewnij się, że to nigdy nie zostanie opublikowane :)
<a href="javascript:alert(document.compatMode);">What mode am I?</a>
źródło
Według http://www.quirksmode.org/css/quirksmode.html : „Problem polegał na tym, że niektóre strony napisane w trybie dziwactw miały doctypy. Dlatego każda przeglądarka ma własną listę z typami dokumentów, które uruchamiają tryb dziwactw. Zobacz tę przeglądarkę tabela porównawcza zawierająca przegląd tych list: http://hsivonen.iki.fi/doctype/ ”
Mam nadzieję że to pomoże
źródło
Jeśli powiesz IE, że powinien być ścisły (poprzez doctype), nie zmieni zdania w połowie strony.
źródło
Jeśli poprawnie rozumiem tryb dziwactw, strona, która nie jest sprawdzana pod kątem zadeklarowanego typu dokumentu, nie wystarczy, aby uruchomić tryb dziwactw. Po prostu nie wyświetli się poprawnie.
Najlepsze źródło informacji, które znalazłem, do określenia, jak różne przeglądarki obsługują każdy typ dokumentu, znajduje się tutaj .
źródło
W przeglądarce Firefox z dodatkiem Web Developer Toolbar możesz spojrzeć na trzy ikony po prawej stronie paska. Pierwszy z lewej mówi ci, w jakim trybie jesteś.
źródło
W IE zobaczysz to w narzędziach programistycznych (naciśnięcie F12), mówi to w menu: Tryb dokumentu: ... I możesz tam również wymusić inny tryb.
źródło
na stronie html5 wpisz „
<!DOCTYPE html>
” początek strony może zmienić się na document.compatMode = 'CSS1Compat'źródło