Le mode Quirk du moteur de rendu

http://artisan.karma-lab.net/ie-mode-quirk-a-x-ui-compatible

Le mode Quirk d'un moteur de rendu (Presto pour opera, WebKit, Gecko de Mozilla et Trident de MS) consiste simplement à redevenir compatible avec ses anciennes version. Pour IE l'enjeu est de taille de par tous les sites qui ont été tordus pour fonctionner avec ses précédentes moutures.

Du coup IE7 tente pour chaque page, de deviner pour quelle version d'IE elle a été conçue. Et dés qu'il "sent" un truc louche, au cas où, il bascule en mode Quirk. Et dans la série des doutes, nous trouvons, le commentaire avant le DOCTYPE.
Et sous IE6, c'est encore pire, même une entête XML dans le plus pur style de l'art (<?xml version="1.0" encoding="UTF-8"?>), placée comme il se doit avant de DOCTYPE fait basculer le navigateur en mode Quirk.

Le mode Quirk n'est pas une spécificité IE. Tous les moteurs de rendu disposent d'un tel mode dés qu'il s'agit d'afficher du code HTML v3.2.
Le tag DOCTYPE a justement été créé pour permettre de "forcer" le mode de rendu désiré pour une page. Ainsi le DOCTYPE HTML 3.2 Final (ou alors pas de DOCTYPE du tout) va logiquement provoquer sur la majorité des navigateurs un rendu en mode "capitaine caverne".

si l'on spécifie un DOCTYPE XHTML 1.1 strict, le document sera interprété de manière correcte, sauf par IE6 (à cause d'une déclaration XML collée en haut du document?).

Du coup pour IE8, changement de stratégie : IE sera dorénavant compatible avec IE... sauf indication du contraire.
plutôt que demander une compatibilité illusoire, pourquoi ne pas simplement indiquer ce que l'on sait, à savoir sur quels navigateurs le site a été concrètement testé, et sur lequel donc, nous sommes certain qu'il fonctionne. Il ne resterait alors plus au navigateur à récupérer le page en mimant son fonctionnement de l'époque.

Ainsi pour indiquer à IE8 que c'est bien lui que l'on vise et pas une vieille version moisie, il suffit de coller dans chaque page le META tag suivant : <meta http-equiv="X-UA-Compatible" content="IE=8" />

Par exemple pour déclarer qu'un site a été testé pour FireFox 3 et pour IE8, cela donnerait :
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3" />

http://www.validatethis.co.uk/news/fix-bad-value-x-ua-compatible-once-an...

présente une solution, avec coté serveur une conf (web.config).

ici pour apache: https://github.com/h5bp/server-configs-apache

 

Sur le web

http://www.lesintegristes.net/2008/04/06/que-se-passe-t-il-en-mode-quirk...
Pour IE 9 (et antérieur) : le mode quirks -> IE 5.5 ; pour IE 10 le mode quirks est lié aux specs HTML 5 (plus à https://msdn.microsoft.com/en-us/library/jj676915%28v=vs.85%29.aspx).

http://acid3.acidtests.org/  http://www.webstandards.org/action/acid3/ 
https://html.spec.whatwg.org/multipage/

http://www.quirksmode.org/

Internet Explorer 11 : mode Quirk est déprécié (cf https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/html.md et https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/TOC.md)
https://msdn.microsoft.com/library/bg182625.aspx#docmode

logo drush