2013-07-11 28 views
5

Vorrei sapere se è possibile disabilitare tutto lo scorrimento su una pagina web.Disabilita tutto lo scorrimento sulla pagina web

Attualmente sto usando

html, body { overflow:hidden; } 

Il problema è che questo non funziona su dispositivi iOS e se si tiene nella ruota del mouse e trascinarla verso il basso si può anche scorrere, così sembra come un molto povera soluzione al problema

C'è un modo per disattivare tutti i metodi di scorrimento su tutti i dispositivi e quindi riattivarlo?

+1

Non aggiungere contenuti che trabocca pagina ...?! Un altro contesto e un caso d'uso aiuterebbero qui. – deceze

+0

Non positivo se questo dovrebbe funzionare, ma proverei ad aggiungere un div overlay trasparente che copra la vista. Trascinando su iOS probabilmente proverai a scorrere quel div, che non farebbe nulla. –

+0

prova questo: * {overflow: hidden; } –

risposta

5

Ho avuto esattamente lo stesso problema, l'ho risolto con il seguente;

var disableScroll = false; 
var scrollPos = 0; 
function stopScroll() { 
    disableScroll = true; 
    scrollPos = $(window).scrollTop(); 
} 
function enableScroll() { 
    disableScroll = false; 
} 
$(function(){ 
    $(window).bind('scroll', function(){ 
     if(disableScroll) $(window).scrollTop(scrollPos); 
    }); 
    $(window).bind('touchmove', function(){ 
     $(window).trigger('scroll'); 
    }); 
}); 

tatto mossa è legata alla finestra come l'evento finestra di scorrimento non viene generato fino a quando tocco spostamento viene completato, permette un'esperienza molto più agevole su iOS!

Questa non è una soluzione perfetta in quanto è possibile "lanciare" la pagina, ma tornerà alla posizione desiderata quando il lancio è completo (poiché l'evento di scorrimento della finestra verrà quindi attivato). Questo perché i browser iOS eliminano molti eventi per le prestazioni. anche le funzioni setTimeout e setInterval non sparano mentre la pagina viene lanciata, anche se il loop non è un'opzione!

Vedi qui http://jsfiddle.net/8T26k/

+0

Grazie mille, ho apportato alcune modifiche come aggiungere 'data-disabled =" true "' al tag body e basta aggiornare questo quando l'utente deve scorrere. questo funziona esattamente come mi aspetterei. Molte grazie per la tua risposta. –

+0

Codice salva-vita! – udog

Problemi correlati