[MSIE] window.event.button retourne toujours 0

Résolu
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 9 sept. 2007 à 11:11
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre 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.

6 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 sept. 2007 à 12:43
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 sept. 2007 à 12:13
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 sept. 2007 à 12:17
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.
0
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
9 sept. 2007 à 12:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
9 sept. 2007 à 12:54
Merci beaucoup, event.type est parfait !
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 sept. 2007 à 12:59
>>ç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.
0
Rejoignez-nous