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 :

Ne pas prendre un double-clic pour 2 clics ?


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut Ne pas prendre un double-clic pour 2 clics ?
    Coucoutte

    J'utilise un événement "onclick" qui déclenche une fonction.

    Un malencontreux double-clic déclenche 2 fois la fonction.

    Du coup, j'ajoute un événement "ondblclick" qui déclenche une fonction bidon qui ne fait rien.

    Malheureusement, cela ne résout pas le problème

    Une tite idée ? Sachant que je ne souhaite pas désactiver la possibilité de double clic (car sur une autre page, j'utilise onclick pour une fonction et ondblclick pour une autre fonction) ?

    Merkouin et à bientôt !
    Couin
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Avec Jquery il y a once() qui limite l'évènement à une seul occurrence.
    Tu peux mettre un flag boolean dans ton évènement onclick le basculer à true sur le premier click puis le tester pour sortir ou non de la fonction
    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
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    si tu veux le faire en JS natif, c'est l'option once:true qu'il faut rajouter a ton event
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    tonElement.addEventListener('click', () => { /*ton traitement*/ }, {once:true});
    si tu veux laisser la possibilite au l'utilisater de cliquer (plus tard dans le temps), tu peux setter un flag avec un timer
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="test">click me</div>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    let canClick = true;
    let count = 0;
     
    document.getElementById('test').addEventListener('click', () => {
     if(canClick) {
       canClick = false;
       console.log('ok', ++count);
       setTimeout(() => {
       	canClick = true;
       }, 1E3);//on laisse 1seconde
    	}
    });
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    J'en apprends encore tous les jours en js pur ...
    Merci Dok
    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 !

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,
    ne connaissant pas once:true non plus, je me suis intéressé à la discussion

    1- once:true : selon la doc :
    once
    Un booléen (Boolean) indiquant que listener doit être invoqué au plus une fois après avoir été ajouté.
    Si true (vrai), listener sera automatiquement supprimé après son appel.
    Du coup, le bouton ne sera plus cliquable. Autant le désactiver, pour prévenir l'utilisateur avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      btn.setAttribute('disabled','disabled');
    2- Sinon, si on veut qu'il puisse encore être cliquable, on peut utiliser (SANS once:true) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    btn.addEventListener('click', (event) => { 
      // ...... (action) .......
      btn.setAttribute('disabled','disabled'); // désactive
      window.setTimeout( () => { 
        btn.removeAttribute('disabled'); // active
      }, 500); // durée à adapter
    });
    3- Par contre, le double-clic n'est plus possible !

    4- Je suis tombé sur autre discussion , qui proposait une solution avec event.detail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "use strict";
    document.querySelector('#btn').addEventListener('click', (event) => { 
      if (event.detail === 1 ) // 1 click
      {
        console.log('simple click ! '+event.detail);
      } else if( event.detail === 2)  // 2 click
      {
        console.log('double click ! '+event.detail);
      }
    });
    On peut donc différencier le simple clic du double-clic.

    MAIS,... même quand on fait un double-clic (= 2 clic très rapides) :
    • le simple clic est activé au 1er clic
    • et le double_clic au 2ème....



    5- [EDIT] Peut-être une solution :
    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
    "use strict";
    var nbr_clk = 0;
    document.querySelector('#btn').addEventListener('click', (event) => { 
      nbr_clk++;
      window.setTimeout( () => { 
        if (nbr_clk === 1 ) // 1 click
        {
          console.log('simple click ! '+nbr_clk);
        } else if( nbr_clk === 2)  // 2 click
        {
          console.log('double click ! '+nbr_clk);
        }
        nbr_clk = 0;
      }, 500); // durée pour définir le double-clic (à adapter)
    });
    Là, on sépare bien simple et double clic.
    L'inconvénient est de devoir utiliser :
    • un compteur externe (btn_clk)
    • une temporisation "bidon" (quelle durée pour définir le double-clic ?)

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    jouer avec les délais entre deux appuis, ou plus, consécutifs est délicat compte-tenu des délais de prise en compte qui sont différents suivant les navigateurs, voire les supports : PC, tablette, mobile, et ce d'autant que ces délais sont paramétrables par l'utilisateur.

    La solution du « flag » est une solution « couramment utilisée », enfin si le besoin s'en fait vraiment sentir, si l'on ne veut pas de réentrance dans une fonction.

    Sachant qu'en JavaScript tout est objet, les fonctions également, on peut passer par l'ajout d'une propriété propre à la fonction sans passer par une variable globale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function maFonction() {
      if (!maFonction.enCours) {
        maFonction.enCours = true;
        console.log("Fonction in progress !");
        // simulation retour function
        setTimeout(() => {
          console.log("Out fonction");
          maFonction.enCours = false;
        }, 10000)
      }
      else {
        console.log("Exit fonction directement !")
      }
    }
    Il suffit de penser à remettre le « flag » à false en sortie ou en retour de fonction asynchrone.

  7. #7
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Coucou

    Merci pour vos réponses.

    Pour Doksuri, j'ai fais un test, ça élimine bien le deux fois simple click quand on fait un double click mais lorsque l'on double click, ça lance ce qu'on veut exécuter en simple click et ensuite ce qu'on veut exécuter en double clic.

    Je pense qu'en JQuery (once), pour faire référence à la première réponse de SpaceFrog, ça fera pareil.

    La solution 5 de jreaux62 fait la même chose qu'un code que j'avais trouvé mais qui laisse du délai pour exécuter ce qui doit être lancé en simple click (le temps que le script regarde si il y a un deuxième click dans la foulée pour faire un double click).

    Pour la solution de NoSmoking, si on considère que "Function in progress" est ce qui doit être exécuté par simple clic, et "Exit fonction directement !" ce qui doit être exécuté par un double clic, je me retrouve dans le même cas qu'avec la solution de Doksuri.

    Je pense que je ne vais pas trop avoir le choix et passer par le délai de détection du deuxième clic d'un double clic.

    A moins d'une solution miracle
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je me perds dans ce que tu essaies de faire, ce que tu nous dis
    J'utilise un événement "onclick" qui déclenche une fonction.

    Un malencontreux double-clic déclenche 2 fois la fonction.
    Pour la solution de NoSmoking, si on considère que "Function in progress" est ce qui doit être exécuté par simple clic, et "Exit fonction directement !" ce qui doit être exécuté par un double clic, je me retrouve dans le même cas qu'avec la solution de Doksuri.
    ...j'en conclu que tu mets/veux un événement click ET dblclick sur le même élément !!!!!

    Pour rappel:

  9. #9
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    ...j'en conclu que tu mets/veux un événement click ET dblclick sur le même élément !!!!!
    Ui, d'où ma précision en fin de post initial

    Citation Envoyé par Couin Voir le message
    Sachant que je ne souhaite pas désactiver la possibilité de double clic (car sur une autre page, j'utilise onclick pour une fonction et ondblclick pour une autre fonction)
    En effet, si c'était pour tout, juste désactiver le deuxième clic du double clic (accidentel) et sans avoir avoir besoin de double , la tempo de désactivation fait le job.
    Et pour le cas où il a besoin de click (fonction 1) et double click (fonction 2) , je mettrais la tempo qui regarde si y a un deuxieme clic rapidement après le premier.
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  10. #10
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Glané ailleurs sur le net;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    element.onclick = event => {
       if (event.detail === 1) {
         // ici le code du simple click
       } else if (event.detail === 2) {
         // ici le code du double click
       }
    };
    Je n'ai pas testé mais je pense que cela vaut a peine d'y jeter un oeil ...
    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 !

  11. #11
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    J'étais tombé sur ce code sur stack. Et d'ailleurs ca avait fait comme il est répondu par Fabien Snauwaert, à savoir que le double clic déclenchera quand même la fonction déclenchée par le simple. .
    D'ailleurs il avait fait un fiddle un peu équivalent https://jsfiddle.net/tsyrak/0y8uqemc/4/
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  12. #12
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Glané ailleurs sur le net...
    C'est le code 4- que j'ai proposé - et testé - dans mon précédent message.
    Comme l'a montré NoSmoking, le click se déclenche aussi sur un double-clic.

    Du coup, à part avec un setTimeout (voir ma proposition -5), je ne vois pas quoi faire d'autre.

  13. #13
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    de la même source
    https://stackoverflow.com/questions/...click-not-both

    le timeout sur le simple click...
    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 !

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Citation Envoyé par Couin
    Et pour le cas où il a besoin de click (fonction 1) et double click (fonction 2) ,
    je persiste à dire que cela est mauvaise pratique qui plus est pas intuitive du tout.


    Néanmoins cela est effectivement faisable en « retardant » la fonction sur le simple clic et en la « killant » pour prendre en compte le double clic.

    La structure de fonctionnement serait, par exemple, dans ce cas la suivante :
    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
    const elem = document.querySelector("button");
    function fctSimpleClic() {
      console.log("Function on simple click.");
    }
    function fctDoubleClic() {
      console.log("Function on double click");
    }
    elem.addEventListener("click", (e) => {
      const el = e.target;
      // on supprime car sur un dblclick on repasse par là
      clearTimeout(el.innerTimer);
      // on retarde l'appel à la fonction
      el.innerTimer = setTimeout(fctSimpleClic, 500);
    });
    elem.addEventListener("dblclick", (e) => {
      const el = e.target;
      // on supprime l'éventuel en cours
      clearTimeout(el.innerTimer);
      // exécute la fonction
      fctDoubleClic();
    });
    Important : ne pas omettre le clearTimeout lors d'un simple clic car, comme déjà précisé, il y en à deux avant le double.

  15. #15
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    je persiste à dire que cela est mauvaise pratique qui plus est pas intuitive du tout.
    Pour le cas où j'utilise les deux évents pour le même objet, le coté intuitif importe peu, dans le sens où le visiteur lambda n'a pas utilité à aller là où le double clic mène. Le double clic est juste réservé pour quelques personnes (ce qui évite de rajouter un bouton ou autre, inutile pour le visiteur).
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  16. #16
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    ...dans le sens où le visiteur lambda n'a pas utilité à aller là où le double clic mène.
    mais qui peux « double cliquer » par inadvertance ou par « Parkinson attitude » par exemple.


    Le double clic est juste réservé pour quelques personnes (ce qui évite de rajouter un bouton ou autre, inutile pour le visiteur).
    dans ce cas autant le gérer correctement côté serveur !


    Après c'est vous qui voyez, comme ils disent

  17. #17
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    mais qui peux « double cliquer » par inadvertance
    J'en ai vu beaucoup, des gens qui double-cliquent au lieu de cliquer, sur internet. Souvent des personnes, on dira, qui ont du mal avec les ordinateurs.
    Citation Envoyé par NoSmoking Voir le message
    mais qui peux « dans ce cas autant le gérer correctement côté serveur !
    Bah je vois pas trop comment puisque simple clic ramène en page d'accueil, double clic ouvre une nouvelle fenêtre.
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr
    Nouvelle version de Jingle Palette sur jinglepalettereloaded.com

  18. #18
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    Vue que la discussion n'est pas marquée comme , j'avais çà dans mes archives (détection avec utilisation de setTimeout )
    Code html : 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
    47
    48
    49
    50
    51
    52
    53
    <!DOCTYPE html>
    <html lang="fr"> <!-- DblOuSimplClick.html -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>Simple clique ou double</title>
    	</head>
    	<body>
        <h3 id="Demo">cliquez ou double-cliquez ici</h3>
        <p id="rep" style="color:blue;"></p>
       </body>
     
    		<script>
          let OldEven = "";
          let xt;
          document.getElementById("Demo").addEventListener("mousedown",mousedown);
          document.getElementById("Demo").addEventListener("mouseup",mouseeup);
          document.getElementById("Demo").addEventListener("click",simpleclique);
          document.getElementById("Demo").addEventListener("dblclick",doubleeclique);
     
          function mousedown() { 
             //console.log("mouse down");
          }
          function mouseeup() {
             //console.log("mouse up");
          }
          function simpleclique() { 
             xt = setTimeout(Analyse, 500);
         }
          function doubleeclique() {
             OldEven="DC";
          }
            
           function Analyse() {
              clearTimeout(xt);
              //console.clear()
              let reponse = document.getElementById("rep");
              reponse.textContent = ""; 
              if (reponse.style.color=="blue"){
                reponse.style.color="black";
              }else{
                reponse.style.color="blue";
              }
              if (OldEven==="DC"){
                //console.log("double click");
                reponse.textContent = "double click";
              }else{
                //console.log("simple click");
                reponse.textContent = "simple click";
              }
             OldEven="";
           }
                    </script>
    </html>
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/02/2008, 18h30
  2. Réponses: 2
    Dernier message: 09/10/2007, 11h31
  3. Double clic pour actionner un lien
    Par Byrdsmann dans le forum Flash
    Réponses: 3
    Dernier message: 25/04/2007, 11h40
  4. double clic pour activer mon SWF sous IE
    Par raldine dans le forum Flash
    Réponses: 1
    Dernier message: 15/02/2007, 13h26
  5. Réponses: 3
    Dernier message: 25/08/2006, 14h01

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