Verhindern eines & lt; input & gt; Element vom Scrollen des Bildschirms auf dem iPhone?
Ich habe mehrere <input type="number">
Elemente auf meiner Webseite. Ich bin mit jQTouch, und ich bin versucht zu bleiben Vollbild zu allen Zeiten; das ist, horizontales scrollen ist schlecht. Immer, wenn ich Sie ein <input>
element, die Seite scrollt rechts, zeigt einen schwarzen Rand auf der rechten Seite des Bildschirms und de-Zentrierung alles. Die Eingänge offset von der linken Seite des Bildschirms, und Sie beginnen irgendwo in Richtung der Mitte der Seite.
Wie kann ich verhindern, dass das scrollen auf focus?
InformationsquelleAutor der Frage Stefan Kendall | 2010-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die Lösung für dieses problem in diesem Beitrag Stop Seite scrollen von focus
Fügen Sie einfach
onFocus="window.scrollTo(0, 0);"
auf Ihre Eingabe-Feld ein und Sie sind fertig!(Versucht es mit
<textarea>
und<input type="text" />
auf dem iPad, aber ich bin mir ziemlich sicher, es wird funktionieren auf dem iPhone auch.)Ich hatte Angst, die scrollen sichtbar sein würde, wie ein flimmern oder so, aber das ist glücklicherweise nicht der Fall!
InformationsquelleAutor der Antwort Mischa Magyar
hier ist, wie ich dies Problem gelöst auf dem iPhone (mobile Safari) (ich verwendet jQuery)
1) erstellen Sie eine Globale variable, die hält die aktuelle scroll-position und die ist jedes mal aktualisiert, wenn der Benutzer führt einen Bildlauf im viewport
2) binden Sie das focus-Ereignis des Eingabefeldes in Frage. wenn konzentriert, haben das Dokument scrollen, um die aktuelle position
Ta Da! Kein lästiges "Blättern im Fokus"
Einer Sache im Auge zu behalten...stellen Sie sicher, dass das Eingabefeld ÜBER die Tastatur, sonst blenden Sie das Feld. Werden können, leicht gemildert durch das hinzufügen einer if-Klausel.
InformationsquelleAutor der Antwort Maurice
Ich würde empfehlen die Verwendung von jQuery.animieren () - Methode im Zusammenhang mit obennicht nur die Fenster.scrollTo(0,0), da iOS animiert die Seite offset-Eigenschaften, wenn ein input-element fokussiert ist. Aufruf-Fenster.scrollTo() nur einmal funktioniert möglicherweise nicht mit dem Zeitpunkt dieser native animation.
Für mehr hintergrund, iOS wird die Animation der
pageXOffset
undpageYOffset
Eigenschaftenwindow
. Sie können eine bedingte Prüfung auf diese Eigenschaften reagieren, wenn das Fenster hat sich verschoben:So, zur Erweiterung auf den oben genannten link, das wäre ein vollständigeres Beispiel:
InformationsquelleAutor der Antwort cacheflowe
Wenn der Fokus eingestellt wird programmgesteuert, das ist, was ich tun würde:
Speichern das Fenster scollTop Wert vor der änderung des Fokus. Dann wieder die scrollTop auf den gespeicherten Wert sofort nach Einstellung von Fokus.
Wenn die Verwendung von jQuery:
InformationsquelleAutor der Antwort Himanshu P
Versuchen, diese, ich denke, das problem ist der zoom:
InformationsquelleAutor der Antwort user3255427