IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

innerHTML ou/et DOM Methods


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut innerHTML ou/et DOM Methods
    Bonjour,

    J'ai une question vraiment qui me taraude depuis des mois et j'ai du mal à faire un choix, même si j'ai une idée.

    Que dois-je utiliser ? innerHTML ou les méthodes DOM

    Ma théorie serait d'utiliser
    * le DOM pour tout ce qui est éléments intéractifs : Champs, boutons etc ... nettement plus lisible et plus souple pour ajouter des methods ou des events
    * le innerHTML (étant soi disant plus rapide) pour tout ce qui est affichage de résultat (notamment quand il s'agit de gros tableaux avec plus d'une centaine d'enregistrements) par rapport à une recherche dans une base de donnée par exemple

    Est-ce que je fais fausse route ou pas ...

    Merci d'avance pour les réponses

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Je préconise toujours de passer de préférence par les méthodes du DOM afin d'éviter tout souci de prise en compte hasardeuse du code inséré en innerHTML selon les navigatuers.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Je conseille fortement de passer par innerHTML car c'est la méthode la plus rapide et la plus efficace pour produire du code DOM.

    La seule contrainte c'est qu'il faut que tu fermes bien toutes tes balises.
    Il n'y aura jamais d'interprétation hasardeuse des navigateurs à partir du moment où tu leurs fais manger du html correct.

    La seule chose qu'il faut éviter c'est de prendre ce innerHTML depuis un noeud DOM et de le manipuler pour le réinjecter ensuite, car des navigateurs comme IE te retourne le innerHTML avec du HTML parfois interprété à sa manière (suppression des guillemets pour les attributs par exemple)

    Ensuite si tu dois utiliser générer ton html à partir de données javascript, je te conseille de passer par un système de templating il en existe plusieurs :
    - Handlebars
    - MicroTEmplating de John Resig
    - Underscore
    ...


    A partir du moment ou tu commences à avoir beaucoup de HTML à produire depuis JS, je te déconseille de passer par le DOM, car en terme de performances ça sera horrible. Si tu travaille le HTML dans une chaine de caractères (String) et que ensuite tu envoies tout en une seule fois au DOM, en terme de perfs tu es gagnant

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A noter que innerHTML fait pleinement partie de la spécification DOM en HTML5.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 64
    Par défaut
    L'utilisation de innertHTML n'est pas bloquée par certains browsers ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Je conseille fortement de passer par innerHTML car c'est la méthode la plus rapide et la plus efficace pour produire du code DOM.
    La plus rapide ... j'en conviens.
    Je reste cependant sceptique quand a la prise en compte intégrale du code de façon crossbrowser.
    La méthode DOM est certes plus lente, mais à qui est à quelques microsecondes près ?
    La methode de création par le DOM permet de s'assurer que l'element inséré est parfaitement pris en compte avec toutes ses propriétés pas le navigateur, vu que c'est le navigateur qui le crée au lieu d'avoir à parser du code html.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    non faucheuse, la méthode est universelle

Discussions similaires

  1. [DOM] innerHTML et <table>
    Par djayp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2008, 13h21
  2. [DOM] innerHTML value input firefox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2007, 10h07
  3. [DOM] InnerHTML, radioButton et Firefox
    Par jupit dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/04/2007, 20h49
  4. [DOM] createElement VS innerHTML
    Par Gruik dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 07/01/2007, 15h41
  5. [DOM] L'équivalent de innerHtml existe-t-il sans parser ?
    Par zefrit dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/09/2005, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo