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 :

impossibilite de differencier les boutons de la souris et le nombre de clics


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut impossibilite de differencier les boutons de la souris et le nombre de clics
    Bonjour,

    j'essaie lors d'un clic du bouton droit de la souris dans un canvas, d’exécuter une fonction (javascript) avec comme paramètre les coordonnées de l’événement.

    Pour ce faire, j'ai essayé le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oncontextmenu = ma_fonction(window.event.clientX, window.event.clientY);
    sachant que j'ai besoin d'une action variant selon l’élément où a eu lieu le clic.

    Je m'explique. Si le clic a eu lieu "sur" un élément de type A appeler la fonction Af, si c'est un élément de type B appeler la fonction Bf.

    Sachant qu'il n'y a qu'une fonction a appelé par type et pas plus il ne m'est pas nécessaire de passer par un menu.

    D'avance merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut
    debut de reponse:

    dans le .htm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <canvas id = "id_canvas" oncontextmenu = ma_fonction(event)> </canvas>
    dans le .js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function ma_fonction(event) { 
    	// mon traitement
    }
    reste la fonction (mais c'est hors propos ici) et à desactiver "l'application" du veritable clic droit ie le menu contextuel (enregistrer image, ...) qui apparait apres.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut impossibilite de differencier les boutons de la souris et le nombre de clics
    autre 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
    16
    17
    18
     
    init() {
    	canvas.ondblclick = function(canvas) {
    		myDblClick(canvas); 
    	}
    	canvas.oncontextmenu = function(canvas) {
    		myContextmenu(canvas);   
    	   return false;
    	}
    }
     
    function myContextmenu(canvas) {
    	alert("clic droit");
    }
     
    function myDblClick(canvas) {
    	alert('double clic');  
    }
    plus besoin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oncontextmenu = ma_fonction(event)
    dans la balise canvas et tout fonctionne bien.

    Sauf si on rajoute un écouteur sur un simple clic gauche ou une pression de bouton ainsi le code suivant:
    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
     
    init() {
    	canvas.onmousedown = function(canvas) {
    		myClick(canvas);  
    	   return false;
    	}
    	canvas.ondblclick = function(canvas) {
    		myDblClick(canvas); 
    	}
    	canvas.oncontextmenu = function(canvas) {
    		myContextmenu(canvas);   
    	   return false;
    	}
    }
    function myContextmenu(canvas) {
    	alert("clic droit");
    }
    function myDblClick(canvas) {
    	alert('double clic');  
    }
    function myClick(canvas) {
    	alert("simple clic");
    }
    donne toujours le même message quelque soit le bouton ou le nombre de clics : "simple clic"

    Si quelqu'un peut m'expliquer ce qui ce passe ou comment avoir les 3 événements distincts

  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
    Oula, tu réponds bien à tes propres questions ^^

    Pour répondre à la dernière, tu bloques le cliques, hors un clique droit ou un double clique comment par un "clique" donc ils ne peuvent jamais se déclencher.

    essaye sans bloquer le simple clique, tu arriveras peut-être à ce que tu désires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    init() {
    	canvas.onmousedown = function(canvas) {
    		myClick(canvas);  
    	   return true;
    	}
    	canvas.ondblclick = function(canvas) {
    		myDblClick(canvas); 
    	}
    	canvas.oncontextmenu = function(canvas) {
    		myContextmenu(canvas);   
    	   return false;
    	}
    }
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(a='eval(a)')
    recursive make it evil
    eval make it eval

  5. #5
    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 par exemple
    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
    $('#element').mousedown(function(event) {
        switch (event.which) {
            case 1:
                alert('bouton gauche');
                break;
            case 2:
                alert('Molette');
                break;
            case 3:
                alert('bouton droit');
                break;
            default:
                alert('tu es sur que c\'est une souris ?');
        }
    });
    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 !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut
    merci je vais tester

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut
    @willpower
    Cela ne change rien (le clique droit "capture" tous les events), cependant que le double clique soit bloqué par le clique simple je peux le comprendre en revanche que le clique simple gauche bloque le clique droit me parait moins logique.

    @SpaceFrog
    merci j'utiliserai cette méthode en dernier recours, car je préférais me passer de Bibliothèque externe au langage

  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
    Citation Envoyé par Torx26 Voir le message
    @willpower
    Cela ne change rien (le clique droit "capture" tous les events), cependant que le double clique soit bloqué par le clique simple je peux le comprendre en revanche que le clique simple gauche bloque le clique droit me parait moins logique
    Je ne vois nul part dans ton code que tu spécifie le clique SIMPLE GAUCHE ?

    onmousedown = CLIQUE (bouton enfoncé pour être plus précis, n'importe lequel de bouton)
    ondblclick = DOUBLE CLIQUE (j'avoue ne pas savoir avec quels boutons il interagit)
    oncontextmenu = OUVERTURE DU MENU CONTEXTUEL (déclenché par un clique droit sur la majorité des config.)
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(a='eval(a)')
    recursive make it evil
    eval make it eval

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Oui c'est de ma faute, trop absorber par mon problème, je l'ai mal décri.

    J'ai besoin de faire du drag&drop qui n'est certes pas un simple clic gauche mais un onmouse suivi d'un onmouseup. Cependant comme un clic est un enchainement de onmouse-onmouseup j'ai pris ce raccourcis.

    D'un double clique gauche, je fais apparaitre les objets sur lequels l'utilisateur peut faire du drag&drop.

    Enfin d'un simple clic droit je permets l'édition en faisant apparaitre un fenêtre pour éditer les objets

    voila, si quelqu'un sait comment si prendre de maniere assez direct (ie sans timer, ou ajout de lib).

    Par avance merci

  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
    Y'a longtemps que je ne prends plus la tête avec le drag & drop, c'est tellement bien géré avec JQuery, des fois une lib externe peut être salvatrice ...
    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 !

Discussions similaires

  1. [AC-2003] Impossibilité d'ouvrir un formulaire avec les boutons du menu
    Par maxdeveloppeur dans le forum IHM
    Réponses: 1
    Dernier message: 14/03/2012, 13h40
  2. Réponses: 5
    Dernier message: 19/04/2010, 20h58
  3. Les boutons de la souris ne répondent plus dans Firefox
    Par dvdbly dans le forum Périphériques
    Réponses: 0
    Dernier message: 11/03/2010, 21h36
  4. Inverser les boutons de la souris
    Par Couz02 dans le forum C#
    Réponses: 3
    Dernier message: 08/03/2009, 10h35
  5. [maxthon]pb avec les boutons de côtés de ma souris
    Par arfy dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 09/10/2005, 11h15

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