propriétés de l'événement touchend
Si j'attrape tous les événements touchend des appareils mobiles avec:
$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...
J'ai besoin de toucher.screenX, touch.screenY, touch.clientX et toucher.clientX 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 tactiles avec e.touches[0]
. Dans mes tests sur un ipad, e.touches
est toujours indéfini. Je n'utilise aucun plugin jquery.
Également essayé e. targetTouches, qui est également indéfini.
Quelqu'un peut-il aider?
2 réponses
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 c'est un peu 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
La propriété touche est un objet TouchList. Vous pouvez voir la référence de classe TouchList ici .
Si vous surveillez sa propriété length avec cet exemple de code sur # log div:
$('#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 lors de l'exécution de touchstart et touchmove, un 0 lors de l'exécution de touchend. C'est pourquoi vous obtenez undefined à partir de e.touches[0]
.