DOM vs namespace pour implémenter HTML5 sur IE6, IE7, Firefox2, Camino, etc.

Sur webdevfr, les discussions vont bon train sur HTML5 : Yves Van Goethem soumet à notre attention deux méthodes disponibles aujourd’hui pour pallier les insuffisances des anciens navigateurs (Firefox 2) ou des mauvais élèves du W3C (IE6, IE7) :

DOM vs Namespace html:

  1. Le DOM pour créer from scratch ex nihilo les balises manquantes. Cette méthode préconisée notamment par John Resig consiste à créer les éléments dont nous avons besoin via Javascript :

    
        <!--[if IE]>
            <script type="text/javascript">
                document.createElement("header");
                document.createElement("footer");
                document.createElement("nav");
                document.createElement("article");
                document.createElement("section");
            </script>
        <![endif]-->
    

    Pour automatiser la création des éléments présents dans HTML5, Remy Sharp nous propose HTML5 enabling script :

    
       <!--[if IE]>
           <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
       <![endif]-->
    
  2. Le préfixe html: pour déclarer l’élément dans son namespace :

    
    <html:header>Ceci est un header</html:header>
    

Pour faire le point sur les avantages et inconvénients de ces deux techniques, voici l’excellent article How to get HTML5 working in IE and Firefox 2 suggéré par Adrien Leygues dans le fil de discussion en question.

Un script PHP à écrire…

Pour réunir le meilleur des deux mondes, Yves Van Goethem propose de servir les éléments HTML avec ce préfixe uniquement pour IE, le code serait réécrit par un moteur en back-end pour obtenir un script côté serveur (et non plus dépendant de Javascript) pour automatiser la prise en compte des balises HTML5 par IE, ce qui permettrait d’utiliser les nouvelles balises HTML5 dès avant-hier ! N’hésitez pas à vous manifester si vous avez déjà développé un script ou simplement si vous avez des idées sur la question.

En attendant Godot 2022 ^_^v

Voici un exemple de page HTML5 valide proposée par Remy Sharp dans HTML 5 Boilerplates utilisant le script html5.js :


    <!DOCTYPE html>
    <html>
        <head>
            <meta charset=utf-8 />
            <title>HTML 5 complete</title>
            <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
            <style>
                article, aside, dialog, figure, footer, header, hgroup, menu, nav, section { display: block; }
            </style>
        </head>
        <body>
            <p>Hello World</p>
        </body>
    </html>

Notez le display: block pour déclencher la prise en compte des éléments HTML and the cat’s in the bag!.

Links for Free