iOS / WebKit: touchmove / touchstart funktioniert nicht bei Eingabe & Textbereich

8

Ich habe eine IOS Web App, die nicht gescrollt werden kann. Aus diesem Grund möchte ich das Scrollen deaktivieren. Dazu verwende ich das ontouchmove-Attribut eines Elements und lasse es eine Funktion aufrufen, die element.preventDefault verwendet. Ich kann jedoch kein berührendes Ereignis feststellen, wenn es in einem Text- oder Eingabeelement startet, auch wenn das Element deaktiviert ist! Ich habe auch versucht, das touchmove oder touchstart Event mit diesen Elementen über JavaScript addEventlistener zu verbinden, ohne Erfolg!

Und hier ist mein JavaScript:

%Vor%

Danke für jede Hilfe!

    
Louis B. 14.11.2010, 17:39
quelle

2 Antworten

10

Ich denke, ich habe mit der CSS-Eigenschaft "pointer-events" eine große Problemumgehung für dieses Problem gefunden:

%Vor%

Dies wird Mobile Safari auf iOS (andere bisher nicht getestete) ignorieren die Textareas zum Scrollen, aber erlaubt Fokus wie üblich zu setzen.

    
Thomas Bachem 27.04.2011, 02:27
quelle
2

die Thomas Bachem Antwort ist die eine!

Ich habe es in jQuery neu geschrieben. Fügen Sie einfach eine Klasse scrollFix zu Ihren gewünschten Eingaben hinzu und Sie können loslegen. Oder fügen Sie die Event-Handler mit $('input, textarea') an alle Eingaben und Textfelder an.

Wenn Sie nun auf eine Eingabe auf iOS 8+ tippen und einen Bildlauf durchführen, wird der gesamte pointer-events der Eingabe deaktiviert (einschließlich des problematischen Verhaltens). Diese pointer-events sind aktiviert, wenn wir eine einfache Berührung erkennen.

%Vor%     
Dotgreg 24.12.2015 15:24
quelle

Tags und Links