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