Bedingtes Blockieren des Scrolling / Touchmove-Ereignisses in einer mobilen Safari

7

iOS 5 ermöglicht jetzt nativen Überlauf: Scroll-Unterstützung.

Was ich tun möchte, ist das touchmove -Ereignis für alles außer für Elemente, die die Klasse "scrollbar" oder ihre Kinder haben, zu deaktivieren.

Aber ich kann es nicht zur Arbeit bringen; Daran habe ich gearbeitet:

%Vor%     
ʞɔıu 22.12.2011, 22:37
quelle

6 Antworten

15

Ich weiß, dass es eine Weile her ist, dass Sie die Frage gestellt haben, aber ich hatte das gleiche Problem und ich habe Ihren Code als Grundlage für die Lösung des Problems verwendet. Also danke für die Inspiration.

(Javascript + jQuery)

%Vor%

Oder weniger ausführlich, aber letztlich das gleiche Ergebnis (Kredit J Griffiths):

%Vor%

Sie sollten auch das folgende META-Tag einschließen.

%Vor%     
Scott 10.05.2012 17:39
quelle
3

JavaScript Version basierend auf Nevirs Antwort:

%Vor%     
Fred Bergman 27.02.2013 15:36
quelle
2

Wenn Sie dies in jquery document.ready schreiben, wird es funktionieren.

%Vor%     
sems 20.02.2013 14:46
quelle
1
___ answer14982669 ___

Wenn Sie dies in jquery document.ready schreiben, wird es funktionieren.

%Vor%     
___ answer15116024 ___

JavaScript Version basierend auf Nevirs Antwort:

%Vor%     
___ qstntxt ___

iOS 5 ermöglicht jetzt nativen Überlauf: Scroll-Unterstützung.

Was ich tun möchte, ist das %code% -Ereignis für alles außer für Elemente, die die Klasse "scrollbar" oder ihre Kinder haben, zu deaktivieren.

Aber ich kann es nicht zur Arbeit bringen; Daran habe ich gearbeitet:

%Vor%     
___ antwort12290843 ___

Ich habe Scotts Antwort versucht, aber auf meinem iPhone iOS 5.1.1 funktionierte es nicht.

Das ist auch besonders wichtig, wenn Sie eine webClip-App erstellen. Ich hoffe, iOS 6 wird ein Viewport-Tag erlauben, das den automatischen Bounce deaktiviert.

Meine untenstehende Version funktioniert (oder auch nicht) genauso gut wie Scotts obige Antwort, da sie im Grunde dasselbe tut.

jQuery 1.7.2

%Vor%     
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jquery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123webkit ___ WebKit ist eine Open-Source-Web-Content-Engine für Browser und andere Anwendungen wie Apple Safari, Mail, App Store und verschiedene mobile Browser einschließlich der vorinstallierten Browser für Android, iOS, RIM Blackberry, Symbian und WebOS. ___ answer10539411 ___

Ich weiß, dass es eine Weile her ist, dass Sie die Frage gestellt haben, aber ich hatte das gleiche Problem und ich habe Ihren Code als Grundlage für die Lösung des Problems verwendet. Also danke für die Inspiration.

(Javascript + jQuery)

%Vor%

Oder weniger ausführlich, aber letztlich das gleiche Ergebnis (Kredit J Griffiths):

%Vor%

Sie sollten auch das folgende META-Tag einschließen.

%Vor%     
___ qstnhdr ___ Bedingtes Blockieren des Scrolling / Touchmove-Ereignisses in einer mobilen Safari ___ tag123cordova ___ Apache Cordova (früher PhoneGap) ist ein Framework, mit dem Entwickler plattformübergreifende mobile Anwendungen mithilfe von Webtechnologien wie HTML, JavaScript und CSS erstellen können. ___ answer28918924 ___

Wir können anstelle des touchmove -Ereignisses das touchstart -Ereignis verwenden. Unter Ein-Finger-Ereignisse wird angegeben, dass während eines Pans keine Ereignisse gesendet werden, daher kann touchmove zu spät sein.

Ich habe den Listener zum Dokument, nicht zum Body hinzugefügt.

%Vor%     
___ answer8799958 ___

Hier ist eine (meist) funktionierende Lösung zum Deaktivieren des vertikalen Scrollens für alle außer übergelaufenen Elemente:

(CoffeeScript):

%Vor%     
___ tag123mobilesafari ___ Eine mobile Version von Apples Safari-Webbrowser. ___
tim 05.09.2012 22:49
quelle
0

Wir können anstelle des touchmove -Ereignisses das touchstart -Ereignis verwenden. Unter Ein-Finger-Ereignisse wird angegeben, dass während eines Pans keine Ereignisse gesendet werden, daher kann touchmove zu spät sein.

Ich habe den Listener zum Dokument, nicht zum Body hinzugefügt.

%Vor%     
Pavan 07.03.2015 19:18
quelle
-1

Hier ist eine (meist) funktionierende Lösung zum Deaktivieren des vertikalen Scrollens für alle außer übergelaufenen Elemente:

(CoffeeScript):

%Vor%     
Nevir 10.01.2012 07:37
quelle