Grosse polémique sur le web la semaine passée suite à 3 articles :
- Compatibility and IE8 (IEBlog)
- Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8
- From Switches to Targets: A Standardista's Journey
Le problème est le suivant : avec IE8, Microsoft est confronté à un problème de rétro compatibilité. En clair il faut pouvoir afficher correctement des anciennes pages à base de soupe de balise avec le nouveau moteur de rendu du prochain IE.
La technique utilisée aujourd'hui par les différents navigateurs modernes pour gérer les anciens documents écrits avant les efforts de standardisation s'appelle le DOCTYPE switch qui permet de basculer entre le mode Quirks et le mode Standard.
Or Microsoft annonce vouloir introduire un nouveau mécanisme pour basculer dans un nouveau mode de rendu spécifique à IE8. Pourquoi aurait-on besoin d'un nouveau mode de rendu alors que des navigateurs comme Safari, Opera et Firefox parviennent à intégrer de nouvelles fonctionnalité et à améliorer de façon constante le support des standards avec le DOCTYPE switch ?
La réponse : le DOCTYPE switch est cassé dans IE. Un peu d'histoire maintenant. Le DOCTYPE switch a permis par exemple d'implémenter le box model correct dans la version 6 d'IE. Mais un bug de ce navigateur a fait que la déclaration du prologue XML dans un document XHTML faisait basculer IE6 en mode Quirks. A l'époque, pour ceux qui connaissaient l'astuce, il suffisait de retirer le prologue et boum, retour en mode Standard. Le problème est que techniquement parlant, pour être valide et en conformité vis à vis des spécifications, le prologue était nécessaire. Tout un tas d'outils permettant de générer du XHTML (type éditeurs WYSIWYG) ont inséré ce prologue automatiquement en voulant bien faire. En conséquence, tout un tas de pages web générées par ces outils étaient affichées en mode Quirks dans IE6. Et à la sortie d'IE7, bam, ze web iz broken. Maintenant IE7 se comporte de façon conforme aux standards et bascule dans le bon mode avec le prologue.
Microsoft ne veux pas du même scénario à la sortie d'IE8. Ca donnerait une image négative du produit et ça mettrait les équipes marketing furax sur un marché redevenu très compétitif.
La team IE est en réalité confrontée à ses propres bugs.
Avec l'aide du Web Standards Project, Microsoft est arrivé à une solution : un nouveau meta tag qui permettrait à IE8 d'afficher une page comme s'il s'agissait d'une ancienne version du navigateur.
Est-ce une bonne idée ou pas ? En tous cas le deuxième article d'ALA est une anticipation des critiques de la blogosphère. Mais ça n'aura pas suffit, les réactions semblent plutôt négatives :
- [...] Yet another quirks mode switch [...]
- [...] the Internet Explorer team will be introducing a big huge hack with IE8 to allow it to function like a normal modern web browser [...]
- [...] We can ignore this all together. We can get popular Web server software to set IE=edge. We can convince the world to use a browser that does not have the ability to lock pages into a specific rendering mode. Bah. [...]
- [...] Has Internet Explorer Just Shot Itself in the Foot? [...]
- [...] Fragmenting web designs into Explorer bug-compatible and standards-mode camps might lock some corporate intranet users into Explorer, and that’s probably what Microsoft really likes about this proposal [...]
- [...] NO, the META tag is NOT a good idea, it's in fact a very bad one because it's a way of forcing the standards community to adopt that META, of forcing users to declare a browser-specific thing in all their documents [...]
Pour finir ce post sur une note positive, il faut savoir qu'IE8 supportera le DOCTYPE switching pour tous les nouveaux DOCTYPEs. Pas de problèmes pour HTML5 donc. Bon, y a quand même un peu de temps encore avant de coder en full HTML5. Mais le truc cool du jour, c'est que le DOCTYPE d'HTML5 est déjà supporté par les navigateurs récents (Safari, Opera, Firefox et le prochain IE8) qui passent en mode standard à sa rencontre. Yeah.
Et sinon quel sera le comportement par défaut ?
Unless you explicitly declare that you want IE8 to behave as IE8, it will behave as IE7.
Allez, à la prochaine