[JS] Clique droit sous FF

Résolu/Fermé
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 - 9 nov. 2005 à 18:51
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 - 14 nov. 2005 à 08:56
Salut tout le monde,

Je recherche une méthode afin de détecter le clique droit sur un élément de ma page sous firefox.

Sous IE, pas de problème, j'ai fais un onmouseup="hop();" et après je test si event.button==2. Et j'aimerais faire quelque chose de similaire sous FF.

Et ce n'est pas pour empêcher que l'on me prenne des images ou protéger quelque chose, mais c'est vraiment utile !

Si quelqu'un à une idée...

4 réponses

Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
10 nov. 2005 à 09:06
Merci, mais en fait ce n'est pas ce que je cherche.

Il faut que le clique gauche soit actif lui, et c'est justement là qu'est mon problème.

Sous IE, pas de problème pour trouver de quel bouton il s'agit, mais sous FF etc, aïe...
1
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
10 nov. 2005 à 12:22
Salut Erdnax !
Ca va bien ?

Tiens, essaie avec ca :
function down(e) {
// renvoi du bouton suivant navigateur
	if( !e ) {
        if( window.event ) {
            //DOM
            button = window.event;
        } else {
            //TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT
            return;
        }
    }
    if( typeof( e.which ) == 'number' ) {
        //Netscape compatible
        button = e.which;
    } else {
        if( typeof( e.button ) == 'number' ) {
            //DOM
             button = e.button;
         } else {
             //TOTAL FAILURE, WE HAVE NO WAY OF OBTAINING THE BUTTON
            return;
         }
    }
}

la variable button est le numéro de ton bouton (droit ou gauche en fait).
Mais attention !!! Le bouton gauche sous IE =1 mais = 2 sous FF et bouton droit =2 sous IE par exemple (enfin j'en sais plus rien, a toi de voir), donc t'embrouille pas les pinceaux, et teste bien sur tous les navigateurs !

Tiens moi au courant, si tu fais un truc plus propre (c'est pas dur...)
A+ !
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
10 nov. 2005 à 13:25
Hey, salut, ca va bien et toi ?

En fait j'ai pas tout compris dans ta fonction. Déjà, elle retourne quoi ?

Et ensuite, il faut simplement que ça marche sous IE et FF, c'est les deux navigateurs que j'utilise et c'est pour mon interface
d'admin, donc il n'y a que moi qui y a accès ;)

Je veux bien en faire un truc plus propre, mais quand j'aurai compris le fonctionnement :P
0
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
10 nov. 2005 à 14:01
Aaaah ! Un peu de jugeotte, que diable !
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<script language="javascript" type="text/javascript">
function fonction(e) {
 // renvoi du bouton suivant navigateur
 if( !e ) {
        if( window.event ) {
            //DOM
            button = window.event;
        } else {
            //TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT
            return;
        }
    }
    if( typeof( e.which ) == 'number' ) {
        //Netscape compatible
        button = e.which;
    } else {
        if( typeof( e.button ) == 'number' ) {
            //DOM
             button = e.button;
         } else {
             //TOTAL FAILURE, WE HAVE NO WAY OF OBTAINING THE BUTTON
            return;
         }
    }
alert(button);
}
</script>
    <title></title>
  </head>
  <body onclick="fonction(event);">
  </body>
</html>

Arrange un peu pour que ca fonctionne sous IE, mais ca va pas etre dur ;-)

Sinon, ca va bien, merci !
J'en ai marre du taf, mais ca, ca change pas de d'habitude ;-)

ENCORE MIEUX :
je suis trop bon...
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<script language="javascript" type="text/javascript">
function fonction(e) {
 // renvoi du bouton suivant navigateur
 if( !e ) {
    if( typeof( e.which ) == 'number' ) {
        //Netscape compatible
        if (e.which==3) {;
	alert('bds');}
    } 
  }

}
function fonction2() {  // pour IE
   alert('bds');
}
</script>

    <title></title>
  </head>
  <body onclick="fonction(event);" oncontextmenu="fonction2();">
  </body>
</html>

1
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
10 nov. 2005 à 15:26
Ok, merci pour tout ça, j'ai compris l'idée, reste plus qu'à mettre en pratique :P

EDIT : c'est bon merci.

Sinon po grave, merci ;)
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
9 nov. 2005 à 20:52
Salut,
Un morceau de code HTML qui permet de détecter le bouton de clic sur une
image. Attention ce code laisse le menu contextuel actif :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Image dynamique</title>
<meta http-equiv="Content-Type"
    content="text/html;charset=iso-8859-1">
<script type="text/javascript">
function hop(e)
    {
    alert("HOP " + e.button );
    }
</script>
</head>
<body>
<p>
        <img src="IMAGES/crabe_off.jpeg" style="border:0;"
            alt="crabe" width="200" height="200"
            onmouseup="hop(event)">
</p>
</body>
</html>
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
14 nov. 2005 à 08:56
Salut à tous,

Juste pour vous donner la solution que j'ai utilisé, vos scripts sont excellents, y a pas à dire, vous assurez... Par contre, j'ai trouvé un méthode tellement plus légère !

En fait, pour détecter le clique droit, il suffit simplement de mettre comme argument de notre élément html :
oncontextmenu="return mafonction()"

Et le tour est joué ;). La fonction renvoie un false dans le cas ou l'action réussie, et un true dans les autres cas. Et c'est tout, et ça marche du tonner ;)

Merci encore pour vos scripts, mais le html est tellement plus simple :P

@+ tous.
0