juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 2008
-
9 sept. 2007 à 11:11
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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>
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 />
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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.