Touchend pas de tir après touchmove
Je suis en train de faire une page pour les appareils mobiles qui détecte la scrollTop
position et défile vers le haut de la page si scrollTop
est inférieure à la moitié de la hauteur ou de défilement vers le bas si ses pas.
J'ai réalisé qu'en utilisant ce:
var ScrollTimeout;
$(window).on('scroll',function(){
clearTimeout(ScrollTimeout);
ScrollTimeout = setTimeout(scrollToTopOrBottom,200);
});
Le problème est que le délai d'attente se déclenche lorsque l'utilisateur a cessé de défilement, mais a toujours le doigt sur l'écran.
Ensuite, j'ai travaillé avec le touchend
événement, et c'était génial.
$(document).on('touchend',function(){
scrollToTop();
});
L'utilisateur pourrait arrêté du défilement (avec le doigt sur l'écran), puis continuer le défilement sans déclenchement de la scrollToTopOrBottom()
fonction.
Le problème, c'est que l'événement est en contradiction entre les navigateurs:
Dans certains navigateurs (Maxthon et Android), le touchend
événement fonctionné comme prévu, mais dans Opera Mobile et google Chrome, le touchend
événement n'est pas déclenché. L'explication à cela est que touchend
n'est pas parce que les feux de touchcancel
a été tiré avant.
J'ai essayé ce
$(document).on('touchmove',function(e){
e.preventDefault();
});
et réussi à éviter le déclenchement de touchcancel
, mais malheureusement aussi évité le comportement naturel de défilement.
Personne ne sait comment cela peut-il être atteint? Je suis complètement à court d'idées.
Grâce.
OriginalL'auteur Luisus | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
d'essayer de le joindre écouteur sur touchend et touchcancel.
OriginalL'auteur dongseok0
J'ai écrit une cale de traiter ce problème est sans doute un peu tard pour vous, mais il pourrait aider quelqu'un.
https://github.com/TNT-RoX/android-swipe-shim
Fonctionne, mais le mouvement de balayage événements dépendent de la vitesse de défilement du conteneur. Je pense que manuellement le défilement est préférable.
OriginalL'auteur tnt-rox