31 votes

propriétés de l'événement touchend

Si je récupère tous les événements de touchend des appareils mobiles avec :

$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...

J'ai besoin d'obtenir les paramètres touch.screenX, touch.screenY, touch.clientX et touch.clientX à partir du paramètre e. Tous les exemples que j'ai vus suggèrent que e.touches sera une collection, et vous pouvez obtenir les détails des touches avec e.touches[0] . Dans mes tests sur un ipad, e.touches est toujours indéfini. Je n'utilise pas de plugins jquery.

J'ai également essayé e.targetTouches, qui est également indéfini.

Quelqu'un peut-il m'aider ?

68voto

Gopherkhan Points 2269

En fait, les touches libérées seront trouvées dans le tableau changedTouches, c'est à dire :

e.changedTouches[0].pageX // get the end x page coordinate for a released touch

Je pense que cela est légèrement plus fiable que de passer par la propriété originalEvent.

Vous pouvez en savoir plus sur changedTouches ici : http://www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent

10voto

javibilbo Points 91

La propriété touches est un objet TouchList. Vous pouvez voir la référence de la classe TouchList ici .

Si vous contrôlez sa propriété de longueur avec cet exemple de code sur le div #log :

$('#element').bind('touchstart', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchmove', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchend', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

vous obtiendrez 1 en exécutant touchstart et touchmove, et 0 en exécutant touchend. C'est pourquoi vous obtenez undefined de e.touches[0] .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X