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

Signaler
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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.

6 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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.
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
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
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Merci beaucoup, event.type est parfait !
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>ç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.