2012-03-22 3 views
5

Attualmente sto utilizzando un overflow: scorri su una pagina Web ottimizzata per l'iPad e funziona benissimo. Ho iniziato a imbattermi nei problemi con gli eventi di tocco sugli elementi nello scrolling div, perché interpretava gli scorrevoli a scorrimento come tocchi. Poiché non vi è alcun evento di scorrimento completo e l'evento di scorrimento si attiva ogni volta che si scorre, ho provato a rilevare l'evento di scorrimento e impostare un timer per disattivare temporaneamente l'evento di tocco. Tuttavia, ho scoperto che l'evento scroll si attiva solo ogni volta che l'utente avvia una scroll, che è raramente con lo scorrimento inerziale.Eventi per lo scorrimento inerziale su Mobile Safari

Esiste un evento di scorrimento continuo o un altro modo per rilevare che lo scorrimento è attualmente in corso?

Questo è solo un problema con lo scorrimento inerziale su Mobile Safari, perché quando si sposta il mouse su OS X, lo scorrimento inerziale si interrompe automaticamente, quindi per avviare l'evento click, in genere si dovrebbe spostare il mouse, evitando così un conflitto. Inoltre, non hai l'input doppio del tocco per scorrere e toccare per toccare.

risposta

3
<script type="text/javascript"> 
<!-- 
    document.addEventListener("touchmove", ScrollStart, false); 
    document.addEventListener("scroll", Scroll, false); 
    function ScrollStart() { 
     //start of scroll event for iOS 
    } 
    function Scroll() { 
     //end of scroll event for iOS 
     //and 
     //start/end of scroll event for other browsers 
    } 
// --> 
</script> 
+3

Credo che si riferisca al periodo di scorrimento del momento che non è gestito da eventi "touchmove" o "scroll". – zanona

+1

avendo appena trascorso un giorno a verificarlo su iOS7 con un div impostato su overflow: scroll - safari aprirà gli eventi di scorrimento in due casi: ** 1) l'utente tocca e poi sposta il tocco per avviare una scroll ** - sembra l'evento di scorrimento spara tanto quanto l'evento touchmove in questo caso ** 2) l'utente ha avviato uno scroll di stile "flick" ** - safari attiverà un evento di scorrimento solo quando lo scorrimento si ferma (incluso il rimbalzo inferiore) –

+0

dal momento che ho anche esaminato Chrome su Android 4.4 - Chrome in realtà genererà eventi di scorrimento mentre si sta verificando lo scorrimento (anche con inerzia) e genererà un singolo evento touchmove all'inizio della pagina. Safari, tuttavia, attiva ** gli eventi ** scroll e touchmove mentre il dito viene tenuto premuto e il div scorrono. –