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 :

Avoir du code plus court.


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut Avoir du code plus court.
    Salut,

    J'ai du code qui ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          window.parent.window.parent.document.getElementById('iframe_main').style.height = window.parent.window.parent.document.getElementById('iframe_main').scrollHeight + (JS_new_page_size - window.parent.JS_size_page) ;
    Donc les lignes peuvent être assez longues...

    Existe-t'il une librairie ou un moyen de transformer "window.parent" en "w.p" et "document.getElementById" en "d.g" par exemple pour avoir des lignes de codes plus courtes, ce serait plus lisible, plus rapide à coder et aussi moins lourd à charger.

    Merci,
    Vincent.

  2. #2
    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 : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    salut,

    il suffit d'utiliser des variables temporaires... et ne pas faire des getElementById à tout bout de champ (à chaque fois on reparcoure le DOM à la recherche de l'élément alors que la variable le référence directement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var parentWin = window.parent.window;
    var mainFrame = parent.document.getElementById('iframe_main');
    mainFrame.style.height = ...;
    maintenant si tu veux "raccourcir" le doc.get, beaucoup de tools utilisent le $ par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //version simple
    function $(elt){
      if (typeof elt == "string")
        return document.getElementById(elt);
      else
        return elt;
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par bigboomshakala Voir le message
    salut,

    maintenant si tu veux "raccourcir" le doc.get, beaucoup de tools utilisent le $ par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //version simple
    function $(elt){
      if (typeof elt == "string")
        return document.getElementById(elt);
      else
        return elt;
    }
    Salut,

    J'arrive bien à utiliser ta solution pour window.parent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var WP = window.parent.window ;
    var WPP = window.parent.window.parent.window ;
    WPP.document.getElementById('iframe_main').style.height = WPP.document.getElementById('iframe_main').scrollHeight - (WP.JS_size_page - JS_new_page_size) ;
    Mais par contre je n'arrive pas à utiliser ta fonction avec un $ pour le document.getElementById.

    Comment l'appeler pour utiliser d.g en lieu et place de document.getElementById ?
    J'aimerai vraiment avoir d.g('DIV_XX') dans le code.

    Merci,
    Vincent?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Salut à tous,

    Quelqu'un a compris ce que voulait dire bigboomshakala par rapport aux fonctions qui commencent par un $ pour pouvoir raccourcir le document.getElemebtById('X') du coding JavaScript et avoir à la place style get('X') ?

    Moi j'ai jamais et je sèche

    Merci,
    Vincent.

  5. #5
    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
    Renseignes-toi sur la portée des variables et le contexte...
    Si tu définis une fonction de type $ dans ta page mais que tu l'appelles dans window.parent ça rique pas de marcher
    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

  6. #6
    Invité
    Invité(e)
    Par défaut
    j'ai compris ce qu'il veut dire

    tu cree une fonction j'ai retreci sa fonction pour bien comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function $(elt){
     
    return document.getElementById(elt);
    }
    la fonction s'appel donc $()

    ensuite dans une fonction ou tu a besoin de faire un document.getElementById('blabla') tu appelle la fonction en mettant comme parametre le nom de l'element ciblé


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function mafonction(){
     
    alert($('blabla').id);
     
    }
    le returne dans la la fonction $() sert a renvoyer la valeur a la fonction qui a appeler la fonction $()

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Merci les gars, ça marche.

    En fait, ce que j'avais pas compris c'est que le "$" était en fait le nom de la fonction, pas un "symbole" spécifique au JavaScript.

    J'en ai même profité pour me débarrasser du .style !

    Donc maintenant ca donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var WP = window.parent.window ;
    var WPP = window.parent.window.parent.window ;
    function get(elt){ return document.getElementById(elt) ; }
    function getS(elt){ return document.getElementById(elt).style ; }
    
    ...et tout le code ressemble donc à:
     WPP.getS('iframe_main').height = WPP.get('iframe_main').scrollHeight + (JS_new_page_size - WP.JS_size_page) ;
    Ce qui ait tout de même mieux que ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.parent.window.parent.document.getElementById('iframe_main').style.height = window.parent.window.parent.document.getElementById('iframe_main').scrollHeight + (JS_new_page_size - window.parent.JS_size_page) ;
    Et cela ne peut être que plus rapide à charger.
    Par contre au niveau perf du navigateur ca appelle une fonction à chaque fois que l'on fait qqchose, non ?
    Donc, peut-être à éviter pour les routines on peut lourde qui manipule les images...

  8. #8
    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 : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Citation Envoyé par defacta Voir le message
    Par contre au niveau perf du navigateur ca appelle une fonction à chaque fois que l'on fait qqchose, non ?
    Citation Envoyé par bigboomshakala Voir le message
    il suffit d'utiliser des variables temporaires... et ne pas faire des getElementById à tout bout de champ (à chaque fois on reparcoure le DOM à la recherche de l'élément alors que la variable le référence directement)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faut-il sacrifier la performance pour avoir un code plus lisible ?
    Par Amine Horseman dans le forum Débats sur le développement - Le Best Of
    Réponses: 42
    Dernier message: 20/05/2015, 09h10
  2. Ecrire en plus court le code
    Par Crack1986 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2012, 18h46
  3. Calcul de plus court chemin dans un graphe
    Par Elmilouse dans le forum Prolog
    Réponses: 6
    Dernier message: 21/03/2010, 20h26
  4. Ecrire un code en plus court
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/10/2007, 09h33
  5. Réponses: 2
    Dernier message: 21/03/2004, 18h57

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