Domanda evento di scorrimento live jQuery su dispositivo mobile (aggirare)


Il vecchio problema: Ottenere l'evento di scorrimento per sparare mentre un utente sta scorrendo su un elemento mentre si trova su un sito o un'app mobile (visualizzazione Web).

Tutto quello che sto cercando è l'accesso al corretto scrollTop() valore mentre un utente sta scorrendo la mia pagina su un dispositivo mobile invece di ottenerlo quando l'utente si ferma.

Sono sicuro che ci sia una soluzione da qualche parte, se sono corretto questa limitazione è impostata da iOS e ci sono state discussioni su di esso negli ultimi anni.

Ho provato a implementare emulatori di scroll nativi, ma nessuno di loro sembra funzionare come voglio e, ad essere sinceri, sembra eccessivo, se tutto quello che voglio veramente è un persistente scrollTop() mentre un utente sta scorrendo.

Attualmente sto pensando di avviare un contatore su touchStart e di fermarlo su touchStop ma qualcosa mi dice che sto perdendo tempo.

Qualche aiuto ragazzi?


44
2017-09-12 00:16


origine


risposte:


Con jQuery:

$('body').bind('touchmove', function(e) { 
    console.log($(this).scrollTop()); // Replace this with your code.
});

Questo dovrebbe darti un flusso consistente del valore scrollTop quando l'utente scorre, ma stai attento mentre sta andando a fuoco anche mentre l'utente sta semplicemente tenendo il dito sullo schermo.

Nota che se stai usando jQuery> = 1.7 il metodo di associazione preferito è .on() invece del .bind() metodo che ho usato nel mio esempio In tal caso il mio esempio sarebbe

$('body').on({
    'touchmove': function(e) { 
        console.log($(this).scrollTop()); // Replace this with your code.
    }
});

Fonte: https://github.com/dantipa/pull-to-refresh-js/blob/master/jquery.plugin.pullToRefresh.js


90
2017-09-17 13:45



forse potresti dare un'occhiata a come iScroll lo fa nel loro _move-metodo che è legato al touchmove evento: https://github.com/cubiq/iscroll/blob/master/src/core.js#L152

È un po 'complicato, ma sono sicuro che lo capirai. Puoi anche usare iScroll per iniziare e associare al loro evento scrollmove (non so come sia chiamato su iScroll 5 ma è stato onScrollMove in iScroll 4). that.y ti darà quindi il valore corretto.


4
2017-09-16 11:15



Ho dovuto seguire il percorso iScroll per farlo. Ho scritto la mia implementazione qui: https://stackoverflow.com/a/23140322/229315


1
2018-04-17 18:12