2013-07-11 14 views
5

Ich würde gerne wissen, wenn es möglich ist, alle Scrollen auf einer Webseite zu deaktivieren.Deaktivieren Sie alle Scrollen auf der Webseite

Ich bin derzeit mit

html, body { overflow:hidden; } 

Das Problem ist, dass dies nicht auf iOS-Geräten funktioniert, und wenn Sie in dem Mausrad zu halten und sie nach unten ziehen können Sie auch blättern, so dass es wie ein sehr schlecht scheint Lösung des Problems

Gibt es eine Möglichkeit, alle Methoden des Scrollens auf allen Geräten zu deaktivieren und dann wieder zu aktivieren?

+1

Sie Inhalt nicht hinzufügen, die die Seite überläuft ...?! Etwas mehr Kontext und ein Anwendungsfall würde hier helfen. – deceze

+0

Nicht positiv, wenn das funktionieren würde, aber ich würde versuchen, ein transparentes Overlay div hinzuzufügen, das den View-Port abdeckt. Das Ziehen auf iOS würde wahrscheinlich versuchen, dieses div zu scrollen, was nichts bewirken würde. –

+0

versuchen Sie dies: * {Überlauf: versteckt; } –

Antwort

5

Ich hatte genau dieses gleiche Problem, ich habe es mit dem folgenden behoben;

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'); 
    }); 
}); 

ist der Touch-Umzug in das Fenster als Fensterscrollereignis bis Berührung Bewegung nicht abgeschlossen ist gefeuert gebunden, so ermöglicht dies eine viel glattere Erfahrung auf iOS!

Dies ist keine perfekte Lösung, da Sie die Seite "werfen" können, aber sie wird an die gewünschte Position zurückkehren, wenn der Wurf abgeschlossen ist (da das Fensterrollen Ereignis dann ausgelöst wird). Dies liegt daran, dass iOS-Browser viele Ereignisse für die Leistung ausschließen. Auch die Funktionen setTimeout und setInterval werden nicht ausgelöst, während die Seite geworfen wird. Auch eine Schleife ist keine Option!

siehe hier http://jsfiddle.net/8T26k/

+0

Vielen Dank, ich habe ein paar Änderungen vorgenommen, wie das Hinzufügen von 'data-disabled =" true "' zum body-Tag und aktualisiere dies einfach wenn der Benutzer scrollen muss. das funktioniert so, wie ich es erwarten würde. Vielen Dank für ihre Antwort. –

+0

Lebensrettercode! – udog

Verwandte Themen