2016-03-25 7 views
13

Voglio impedire il pull-down-to-refresh del chrome mobile (in particolare iOS chrome). La mia applicazione web ha eventi di panning verticali con viewport di larghezza del dispositivo e altezza del dispositivo, ma ogni volta che si esegue una panoramica, Chrome Chrome si aggiorna automaticamente a causa della funzione predefinita del browser. Inoltre, nel browser Safari, lo schermo scorre durante l'evento panning. Voglio disabilitare queste mosse.Come impedire il pull-down-to-refresh del chrome mobile

Certo, ho provato event.preventDefault(); e touch-action: nessuno; Ma non sembra funzionare. Dovrei aggiungere eventListner e touch-action "su body tag"? Mi aspetto una risposta utile con l'esempio.

+1

aggiungere un codice esempio minimo per ottenere buone risposte – Raju

+0

@Raju ho trovato facile codice di esempio, qui! thx> O < http://output.jsbin.com/qofuwa/2/quiet –

+1

Non è quello che intendevo. Pubblicando un [Minimo, Completo e Verificabile esempio (MCVE)] (http://stackoverflow.com/help/mcve) che dimostra che il tuo problema ti aiuterà a ottenere risposte migliori. – Raju

risposta

7

Dal mobili Chrome> = 56 listener di eventi sono passivi per impostazione predefinita e listener di eventi passivi non può impedire più di default. See here

è necessario utilizzare i listener di eventi attivi, invece in questo modo:

document.addEventListener('touchstart', touchstartHandler, {passive: false}); 
document.addEventListener('touchmove', touchmoveHandler, {passive: false}); 

Ecco un esempio di lavoro:

https://output.jsbin.com/niyukadizu/quiet

https://output.jsbin.com/niyukadizu

2

Prova questa.

body { 
    /* Disables pull-to-refresh but allows overscroll glow effects. */ 
    overscroll-behavior-y: contain; 
} 

Ha funzionato bene per me. Ho avuto strani problemi di scorrimento a causa di altri hack javascript. Leggi questo articolo per maggiori dettagli.

https://developers.google.com/web/updates/2017/11/overscroll-behavior

+0

Solo questo ha funzionato per me –