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 :

Bonnes pratiques JavaScript [Débat]


Sujet :

JavaScript

  1. #41
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Sur le même genre de test. Une comparaison entre une boucle for sur une limite définie au préalable (imax dans mon post) ou directement sur Array.length
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Untitled Document</title>
      </head>
      <body>
      <input type="button" onclick="loopOnIMax()" value="boucler sur imax" />
      <input type="button" onclick="loopOnTableLength()" value="boucler sur array.length" />
      <script type="text/javascript">
      function loopOnIMax(){
        var Debut = new Date();
     
        var a = setArray(5000000);
        var b = true;
     
        for(var i=0, imax=a.length ; i<imax ; i++){
          var lol = !(b)
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      function loopOnTableLength(){
        var Debut = new Date();
     
        var a = setArray(5000000);
        var b = true;
     
        for(var i=0 ; i<a.length ; i++){
          var lol = !(b)
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      function setArray(l) {
        var a = [];
        for(var i=0; i<l ; i++){
          a.push(i);
        }
        return a;
      }
      </script>
      </body>
    </html>
    imax vainqueur
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  2. #42
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    imax vainqueur
    Merci pour le test ^^
    Quoi qu'il en soit, j'avais déjà trouvé que l'idée était très bonne et je l'avais déjà adoptée depuis ton intervention un peu plus haut... merci en tout cas !

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #43
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Sur le même genre de test. Une comparaison entre une boucle for sur une limite définie au préalable (imax dans mon post) ou directement sur Array.length
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Untitled Document</title>
      </head>
      <body>
      <input type="button" onclick="loopOnIMax()" value="boucler sur imax" />
      <input type="button" onclick="loopOnTableLength()" value="boucler sur array.length" />
      <script type="text/javascript">
      function loopOnIMax(){
        var Debut = new Date();
     
        var a = setArray(5000000);
        var b = true;
     
        for(var i=0, imax=a.length ; i<imax ; i++){
          var lol = !(b)
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      function loopOnTableLength(){
        var Debut = new Date();
     
        var a = setArray(5000000);
        var b = true;
     
        for(var i=0 ; i<a.length ; i++){
          var lol = !(b)
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      function setArray(l) {
        var a = [];
        for(var i=0; i<l ; i++){
          a.push(i);
        }
        return a;
      }
      </script>
      </body>
    </html>
    imax vainqueur
    oui ça c'est une des optimisations utilisée et préconisée depuis un moment

    il y a également de fait d'utiliser le mot clé new et appeler une méthode externe ( voir par exemple la source de spaffy , permettant de générer un immense tableau ) cf : les contributions
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  4. #44
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    En enlevant les new dans l'appel des méthode, je ne vois pas de différence une utilisant ce code.

    Puis c'est là, qu'on choisit entre un code lisible (à son gout) et les performances. Je préfère utiliser les littéraux, même s'ils sont moins performants. Ce test montre la différence d'appel d'une méthode length depuis un littéral et un objet String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Untitled Document</title>
      </head>
    	<body>
      <input type="button" onclick="test1()" value="littéral" />
      <input type="button" onclick="test2()" value="objet" />
      <script type="text/javascript">
      function test1(){
        var Debut = new Date();
     
        var s = "blah";
        var b = true;
     
        for(var i=0 ; i<500000 ; i++){
          var lol = s.length;
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      function test2(){
        var Debut = new Date();
     
        var s = new String("blah");
        var b = true;
     
        for(var i=0 ; i<500000 ; i++){
          var lol = s.length;
        }
        var Fin = new Date();
        alert((Fin-Debut)+ " ms"); 
      }
     
      </script>
      </body>
    </html>
    Objet String vainqueur.

    Mais on se disperse un peu par ma faute. Les bonnes pratiques sont-elles liées au performances?
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  5. #45
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Mais on se disperse un peu par ma faute. Les bonnes pratiques sont-elles liées au performances?
    +10 ^^ ce sont deux sujets complètement distincts...

    Mais visiblement ça intéressait tout le monde quand même, alors bon...tu es pardonné

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  6. #46
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    +1 !

    Je pense que les deux sont plus ou moins lié mais ... il reste des exceptions ^^

    par exemple l'ajout d'élément via innerHTML est plus rapide que par le document.createElement MAIS cela pose des soucis de compatibilité et autre ( sur les formulaires par exemple )

    Mais un cloneNode est plus rapide qu'un innerHTML ET qu'un document.createElement ...

    Donc je pense qu'en dehors des bonnes méthodes ( disons plutôt des préconisation ) il faut parfois sortir des sentiers battu
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #47
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Citation Envoyé par le_chomeur
    il y a également de fait d'utiliser le mot clé new et appeler une méthode externe ( voir par exemple la source de spaffy , permettant de générer un immense tableau ) cf : les contributions
    Citation Envoyé par franculo_caoulene
    En enlevant les new dans l'appel des méthode, je ne vois pas de différence une utilisant ce code.
    Jme souviens qu'on avait déja eu ce débat fut un temps ^^

  8. #48
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    >>> est-ce que vous vous autorisez de longs chainages de fonctions ?
    [...]
    >>> quand on en chaine ou imbrique plusieurs, ça fait un peu mal les yeux
    Mais j'avoue que je le fais quand même de temps en temps... et vous autres ? ^^
    J'ai retrouvé un exemple "réel" dans un code à moi (ja sais : c'est assez moche à lire MAIS pas taper sur ma tête svp )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tabResultat[((i == (blocs.length - 2)) && (bloc == "1")) ? (tabResultat.length - 1) : tabResultat.length] = grandeursFr[(tabResultat[i] == "un") ? 0 : 1][blocs.length - i - 1];
    (contexte de l'extrait : une fonction maison qui transforme un Number en une chaine en toutes lettres)

    edit pour leChomeur, voir post ci-dessous : dans un thread appelé "Bonne pratiques", je vous concède que cet extrait fait un peu figure de contre-exemple
    Disons quand même qu'en la passant sur plusieurs lignes et avec un peu d'indentation, on atténue la douleur ^^ mais à ce moment là, autant la découper... ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  9. #49
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tabResultat[((i == (blocs.length - 2)) && (bloc == "1")) ? (tabResultat.length - 1) : tabResultat.length] = grandeursFr[(tabResultat[i] == "un") ? 0 : 1][blocs.length - i - 1];
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  10. #50
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut pour ma part
    Ce débat me conforte dans l'utilisation de GWT.

  11. #51
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Ce débat me conforte dans l'utilisation de GWT.
    Salut,
    Pourrais-tu être plus explicite ? Car l'utilisation d'un framework n'exonère en rien d'utiliser du code 'propre'
    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

  12. #52
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut C'est moins l'aspect framework que l'aspect langage
    GWT c'est du JAVA qui se transforme tout seul en du Javascript qui va bien.

    JAVA est un vrai langage qui a toute ses règles de bonnes pratiques et surtout les bons IDE pour s'y tenir.

    Donc avec GWT le problème ne se pose plus de savoir si on est déclaratif ou pas comment on organise son code source par rapport à son HTML .... on fait juste du java ... de la même manière qu'on faisait du bon vieux MOTIF, du SWING du SWT ....

  13. #53
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    par exemple l'ajout d'élément via innerHTML est plus rapide que par le document.createElement MAIS cela pose des soucis de compatibilité et autre ( sur les formulaires par exemple )
    tu es sûr ?
    je ne sais plus si j'ai testé ou pas avec createElement, mais en tout cas pour du texte c'est plus rapide de passer par createTextNode que par innerHTML pour l'écriture, et firstChild.data plutôt que innerHTML pour la lecture

  14. #54
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    GWT c'est du JAVA qui se transforme tout seul en du Javascript qui va bien.

    JAVA est un vrai langage qui a toute ses règles de bonnes pratiques et surtout les bons IDE pour s'y tenir.

    Donc avec GWT le problème ne se pose plus de savoir si on est déclaratif ou pas comment on organise son code source par rapport à son HTML .... on fait juste du java ... de la même manière qu'on faisait du bon vieux MOTIF, du SWING du SWT ....
    et j'aurais tendance à dire que tu es hors sujet.

    AMHA, le débat est explicitement tourné vers l'utilisation directe du JavaScript. Si on part sur du code généré ya plus de débat. Dans ce cas tu utilises le code généré et point. Et si on n'utilise pas systématiquement GWT ou autre ça peut être pour diverses raisons : pas possible, pas envie, etc.

  15. #55
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Attention
    Je tiens à rappeler que le thème du débat porte sur les bonnes pratiques !

    Mais vu l'engouement pour les questions de performances, ce sera le thème du prochain !
    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

  16. #56
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    Je comprends parfaitement le choix de bannir eval() et ses composantes.
    Néanmoins il existe toujours des situations où ces fonctions sont obligatoires. Quelles sont donc les précautions d'utilisation que vous préconiseriez?

    De même pour document.write. J'ai d'ailleurs beaucoup de mal à comprendre en quoi un document.write doit être banni totalement.

    Par exemple sous IE6 (oui, je cherche la compatibilité), l'ajout d'un script dynamiquement dans le <head> ne fonctionnera pas avec les fonctions DOM. Si par exemple on cherche à inclure un .js en plus à la page, sous firefox on pourra le gérer en DOM, mais pas sous IE. Le document.write devient incontournable dans ce genre de cas.

    Du reste j'approuve à peu près tout ce que j'ai lu. Néanmoins je suis contre l'utilisation de objet.on'evenement'=function() {}; dans le cadre de programmes proprements développés et devant être réutilisés.

  17. #57
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par Boa67 Voir le message
    Bonjour,
    Je comprends parfaitement le choix de bannir eval() et ses composantes.
    Néanmoins il existe toujours des situations où ces fonctions sont obligatoires. Quelles sont donc les précautions d'utilisation que vous préconiseriez?
    écrire un code propre dès le départ et non pas des pseudos string

    Citation Envoyé par Boa67 Voir le message
    De même pour document.write. J'ai d'ailleurs beaucoup de mal à comprendre en quoi un document.write doit être banni totalement.
    pose de nombreux problème : de performance, de compatibilité , et de GROS problèmes avec les formulaires...


    Citation Envoyé par Boa67 Voir le message
    Par exemple sous IE6 (oui, je cherche la compatibilité), l'ajout d'un script dynamiquement dans le <head> ne fonctionnera pas avec les fonctions DOM. Si par exemple on cherche à inclure un .js en plus à la page, sous firefox on pourra le gérer en DOM, mais pas sous IE. Le document.write devient incontournable dans ce genre de cas.
    as tu testé ?????

    Citation Envoyé par Boa67 Voir le message
    Du reste j'approuve à peu près tout ce que j'ai lu. Néanmoins je suis contre l'utilisation de objet.on'evenement'=function() {}; dans le cadre de programmes proprements développés et devant être réutilisés.
    la je te rejoins
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  18. #58
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par Boa67 Voir le message
    Bonjour,
    Je comprends parfaitement le choix de bannir eval() et ses composantes.
    Néanmoins il existe toujours des situations où ces fonctions sont obligatoires. Quelles sont donc les précautions d'utilisation que vous préconiseriez?
    au lieu d'eval tu peux utiliser l'objet Function() (à ne pas confondre avec function).
    Même si comme eval(), Function() prend en paramètres des chaines de caractères, celui-ci doit être du code Javascript (en fait on crée dynamiquement une fonction JS).

    Citation Envoyé par Boa67 Voir le message
    De même pour document.write. J'ai d'ailleurs beaucoup de mal à comprendre en quoi un document.write doit être banni totalement.
    Regarde le nombre de sujets où document.write() pose problème Ils ont tous un point commun : la méthode est appelée dans une fonction JS. Et là c'est la catastrophe

  19. #59
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Pourquoi proscrire innerHTML ?

    OK, ce n'est pas valide W3C, mais le probleme de compatibilite avec la norme est plus l'affaire des developpeurs de navigateurs que des utilisateurs.
    Meme si mon experience en JS est assez maigre (je viens de m'y mettre en fait), je n'ai pas constate de comportements differents lors de son utilisation selon le navigateur employe (contrairement a bcp de commandes parfaitement valides et interpretee de maniere incorrecte).
    Personnellement, je ne suis pas le chantre du purisme en programmation, sauf s'il apporte une certaine plus value (compatibilite, visibilite, performance, portabilite,...).

    Ok, s'il s'agit simplement de creer un noeud text innerHTML ne sert absolument a rien, mais sinon ?

  20. #60
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 38
    Points
    38
    Par défaut
    @le_chomeur -> oui, j'ai testé.
    Voilà ma fonction : (inclureV0 sert donc uniquement pour IE6, sous lequel la fonction inclure ne fonctionne pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
            inclure :
                function(fichier) {
                    if(libBoa.ie) return lib.inclureV0(fichier);
                    var n=document.createTextNode('\n');
                    var b=document.createElement('script');
                    var p=libBoa.path==''?'':'/';
                    b.src=libBoa.path+p+fichier+'.js';
                    b.type='text/javascript';
                    b.charset=libBoa.charset;
                    var head=document.getElementsByTagName('head')[0];
                    if(! head) {
                        if(libBoa.debug) alert("libBoa :\nErreur lors de l'importation des packs. La balise head est introuvable");
                        return;
                    }
                    head.appendChild(n);
                    head.appendChild(b);
                },
            inclureV0 :
                function(fichier) {
                    document.write('\n<script type="text/javascript" charset="'+libBoa.charset+'" src="'+libBoa.path+'/'+fichier+'.js"></script>');
                },

Discussions similaires

  1. Bonnes pratiques pour la POO en Javascript
    Par piemur2000 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/10/2013, 15h33
  2. bonnes pratiques syntaxe javascript
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/06/2013, 10h40
  3. Bonnes pratiques de sécurité en JavaScript
    Par Toulousaing dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/04/2012, 19h47
  4. javascript orienté objet: bonne pratique et héritage
    Par negstek dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/08/2011, 19h27
  5. [POO] Bonnes pratiques href="javascript:fonction()"
    Par LhIaScZkTer dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 04/04/2009, 18h26

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