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 :

Raccourcir un morceau de script


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut Raccourcir un morceau de script
    Bonjour a tous.

    J'utilise le google track pour calculer ne nombre de clique sur différents liens de mon site.

    Tout fonctionne cependant j'ai un énorme rappel de toujours la même chose dans mon code et je me demandai comment le rendre plus générique.

    UN exemple serra plus parlant voila ce que j'ai dans ma page
    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
     
    //Tracker Analytics maps 
                $('#exp').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url1']);
                });
                $('#hip').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url2']);
                });
                $('#com').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url3']);
                });
     
                $('#eat').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url4']);
                });
                $('#drink').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url5']);
                });
                $('#dance').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url6']);
                });
                $('#surprise').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url7']);
                });
    Comme vous le voyez j'utilise au clique sur mes différents liens toujours la même chose avec juste l'url qui change.
    je suis sur qu'il y a quelque chose de plus propre a faire comme lancer une fonction au clique sur mes liens avec en paramètre l'url par exemple mais je ne sais pas le faire .

    Pouvez vous m'aider?

    Merci par avance

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var idList = ['#exp','#hip','#com','#eat','#drink','#dance','#surprise'], i = 0;
    while(i < idList.length){
        $(idList[i]).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url'+ ++i]);
        });
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut
    Parcque mes liens ne sont pas les un a la suite des autres, et parcque les url ne sont pas url1 url2 et.
    J'ai mit ça car je n'ai pas le droit de les diffuser.

    Bref ma question est toujours la même.

    Est-ce possible de faire un code plus court et plus propre comme la fonction avec le paramètre dont je parle dans mon message?

    Et si oui quelqu'un peut m'expliquer comment le faire?

    Merci par avance.

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par Willpower Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var idList = ['#exp','#hip','#com','#eat','#drink','#dance','#surprise'], i = 0,
    urlList = ['url1','url2','url3','url4','url5','url6','url7']
    while(i < idList.length){
        $(idList[i]).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+urlList[i]);
        });
        i++;
    }
    Une boucle revient un peu au même qu'une fonction qui surchargerai tous les liens et qui trouverai l'url correspondant à son id dans un tableau. (aussi long à écrire et pratiquement la même efficacité, dépendant de l'usage. ici on fait une boucle initialisatrice(?ça existe comme mot?) pour tous les liens, tandis qu'avec la fonction, elle devrait chercher à chaque clique son lien dans un tableau.)

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    en plus pro(pre) :

    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
    var elemList = [
        {id:'#exp',url:'url1'},
        {id:'#hip',url:'url2'},
        {id:'#com',url:'url3'},
        {id:'#eat',url:'url4'},
        {id:'#drink',url:'url5'},
        {id:'#dance',url:'url6'},
        {id:'#surprise',url:'url7'}
    ], i = 0;
    while(i < elemList.length){
        $(elemList[i].id).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+elemList[i].url);
        });
        i++;
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut
    Merci beaucoup pour ton aide je vais essayer ceci.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut
    Excuse moi je te pose une dernière question d’après ce que j'ai compris quand je clique sur un lien ça va récupérer son le contenue de son attribut id="".

    Mais je ne vois pas ou est ce que c'est gérer.

    Est-ce le .id de elemList[i].id ?

    Si c'est ça je ne savais pas qu'on pouvais récupérer un id de cette façon.

  8. #8
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    j'ai repris ton code qui semble utiliser jQuery ou une librairie similaire:

    $('#exp')
    => renvoit (en jquery) l'objet du dom (de la page) qui a pour id la valeur 'exp'.

    $('#exp').click(function(){
    => ajoute une fonction sur l'élément qui est déclenché lors du clique.


    j'ai donc simplement créé un liste (array) regroupant tous tes liens et j'ai regroupé tes exécutions dans une simple boucle (while).

    pour chaque element de la liste
    on récupére l'élement dom correspond via son id
    on ajoute une fonction lors de l'événement clique.

  9. #9
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    ce sont des liens ajax ou pas ?

    parce qu'en fait, si tu veux juste logger le href des liens, tu peux faire (pour tous les liens du site) remplacer tout le code par cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('a').click(function(){
         _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+$(this).attr('href'));
    });

  10. #10
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    et si tu as des liens qui peuvent être créé et ajouté dynamyquement par la suite (après que la page ait été générée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('a').live('click',function(){
         _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+$(this).attr('href'));
    });

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut
    Salut,

    alors il y a bien un traitement en Ajax mais pas sur les liens.

    J'ai testé ton code et ca me sort elemList[i] is undefined alors qu'a priori il est bien défini

  12. #12
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    tu ne dois pas le faire sur le document.ready ...

  13. #13
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    heu c'est impossible que les elemList[i] soit indéfinis (dom ready ou non) si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var elemList = [
        {id:'#exp',url:'url1'},
        {id:'#hip',url:'url2'},
        {id:'#com',url:'url3'}
    ], i = 0;
    while(i < elemList.length){
        //  elemList[i] NE SERA JAMAIS "UNDEFINED" ici.
        i++;
    }

Discussions similaires

  1. Raccourcir un script qui fonctionne
    Par bpascal91 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 15/04/2011, 14h07
  2. Réponses: 6
    Dernier message: 14/04/2011, 00h03
  3. incompréhension morceau de script .ksh
    Par rouget dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/02/2011, 11h59
  4. morceau de script non fonctionnel
    Par rouget dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/11/2010, 21h55
  5. Morceau de script pas très clair
    Par rouget dans le forum Unix
    Réponses: 2
    Dernier message: 18/11/2010, 09h14

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