iOS/WebKit: touchmove/touchstart, die nicht am input & textarea
Ich habe ein IOS-Web-App können nicht gescrollt werden. Aus diesem Grund möchte ich deaktivieren scrollen. Um dies zu tun, ich benutze ein element ist ontouchmove-Attribut, und haben Sie eine Funktion aufrufen, verwendet element.preventDefault.
Allerdings bin ich nicht in der Lage zu erkennen und zu berühren-Ereignis aus, wenn es beginnt, auf eine textarea oder ein input-element, auch wenn das element deaktiviert ist! Ich habe auch versucht, die Bindung der touchmove oder touchstart-event auf diese Elemente über JavaScript addEventlistener, ohne Erfolg!
Und hier mein JavaScript:
function onBodyLoad() {
document.addEventListener( "touchstart", doNotScroll, true );
document.addEventListener( "touchmove", doNotScroll, true );
}
function doNotScroll( event ) {
event.preventDefault();
event.stopPropagation();
}
Vielen Dank für jede Hilfe!!!
- Ich kam mit einer Teillösung: mobweb.ch/... - Noch auf der Suche nach etwas besserem tho!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, ich habe gefunden ein großer workaround für dieses Problem mit dem "pointer-events" CSS-Eigenschaft:
Damit wird Mobile Safari auf iOS (andere nicht getestet bisher) ignoriert die Texteingabefelder für scrollen, sondern ermöglicht es, Fokus etc. wie üblich.
-webkit-overflow-scrolling: touch;
zu Ihremhtml
oderbody
tag. Siehe hier für mehrden Thomas Bachem Antwort ist die eine!
Ich schrieb es in jQuery. Fügen Sie einfach eine Klasse
scrollFix
zu Ihrem gewünschten Eingänge und Sie sind bereit zu gehen. Oder befestigen Sie die event-Handler, um alle ein-und Texteingabefelder mit$('input, textarea')
.Jetzt, wenn Sie Tippen und scrollen auf eine Eingabe auf iOS 8+, der Eingang bekommen alle Ihr
pointer-events
deaktiviert (einschließlich dem problematischen Verhalten). Diesepointer-events
aktiviert sind, wenn wir feststellen, dass eine einfache Berührung.