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

juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 9 sept. 2007 à 11:11 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 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
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 9 sept. 2007 à 12:43
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.

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 9 sept. 2007 à 12:13
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
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 9 sept. 2007 à 12:17
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
juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 9 sept. 2007 à 12:45
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
juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 9 sept. 2007 à 12:54
0
Merci
Merci beaucoup, event.type est parfait !
Commenter la réponse de juki_webmaster
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 9 sept. 2007 à 12:59
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.