[MSIE] window.event.button retourne toujours 0 [Résolu]

Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Dernière intervention
5 avril 2008
- - Dernière réponse : cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
- 9 sept. 2007 à 12:59
Bonjour,

Aprés avoir ecumer les horreurs JS des quatres coins du web, je me tourne vers vous.

Dans mon code, je fixe un callback pour les evements click (gauche + droit sous Firefox, Gauche sous MSIE) et oncontextmenu (droit sous MSIE), tout marche parfaitement bien sous Firefox et Safari, mais la propriété window.event.button me retrouve TOUJOURS 0 sous MSIE !

Voici le en question (reduit, et à tester sous MSIE).

<html>
<head>
<title>Page moche</title>
<script type="text/javascript">
// ...
function isLeft(MouseEvent)
{
if (typeof(MouseEvent) != 'undefined' &&
typeof(MouseEvent.which) != 'undefined')
{
if (MouseEvent.which == 1)
{
return true;
}
}
else if (typeof(window.event) != 'undefined' &&
typeof(window.event.button) != 'undefined' &&
window.event.button == 0) // MSIE, is always true ! <<<< BUG ?
{
return true;
}
return false;
}
// ...
function isRight(MouseEvent)
{
if (typeof(MouseEvent) != 'undefined' &&
typeof(MouseEvent.which) != 'undefined')
{
if (MouseEvent.which == 3)
{
return true;
}
}
else if (typeof(window.event) != 'undefined' &&
typeof(window.event.button) != 'undefined' &&
window.event.button == 0) // MSIE, is always true ! <<<< BUG ?
{
return true;
}
return false;
}
// ...
function throwOnClick(MouseEvent) {
// ...
if (isRight(MouseEvent))
{
alert('Right');
}
if (isLeft(MouseEvent))
{
alert('Left');
}
// ...
}
// ...
function setEvent(callback)
{
document.onclick = callback;
if (true)//isMSIE()) // Fix double right click (onclick + oncontextmenu) in Firefox / Safari
{
document.oncontextmenu = callback; // MSIE, Right click
}
}
// ...
setEvent(throwOnClick);
// ...
</script>
</head>


</html>

Ma question est: Comment dissociez le click droit et le click gauche sous MSIE ? la propriété window.event.button retournant toujours 0.


Merci d'avance.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
on pourrait aussi, avec IE, tester event.type
        qui donne "click" sur  click gauche et "contexmenu" sur click droit
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
bonjour,

    onclick et oncontextmenu ?

    le souci c'est que sur "click droit", FF déclenche aussi le onclick
       reste à le tester ( sur IE, ce serait inutile. dans l'exemple,
         evt.which donne undefined pour IE bien sûr )

<html>
<head>
<title>Page moche</title>
<script>
    function gauche(evt)
    {    if ( evt.which == 3)
            droit(evt);
         else
            alert("gauche:"+evt.which);   
    }
    function droit(evt)
    {    alert("droit:"+evt.which);    }
</script>
</head>

</html>

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
je ne sais pas si ça correspond à ce que tu veux
            ( j'ai fait bètement avec les évènements dans la balise body ,
                    à toi d'adapter à ton besoin )
on doit pouvoir mieux faire, mais je n'ai pensé qu'à cela pour l'instant.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Commenter la réponse de cs_bultez
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Dernière intervention
5 avril 2008
0
Merci
Bonjour,

ça m'oblige à utiliser deux methodes pour revenir au meme :(

MSIE ne connais pas evt.which, Firefox si.

En attendant ta réponse me convient, faute d'avoir une autre solution.

Merci
Commenter la réponse de juki_webmaster
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Dernière intervention
5 avril 2008
0
Merci
Merci beaucoup, event.type est parfait !
Commenter la réponse de juki_webmaster
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
>>ça m'oblige à utiliser deux trucs différents pour revenir au meme
    s'il n'y avait que dans ce cas ! je ne vais pas t'en faire la liste :
          ce serait beaucoup trop gros.    hélas.


<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Commenter la réponse de cs_bultez

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.