Ich möchte deaktivieren die Doppel-Tap Zoom - Funktionalität auf spezifizierten Elemente im Browser (auf Touch - Geräte), ohne all die Zoom - Funktion zu deaktivieren .
Beispiel: Ein Element kann mehrmals getippt werden, damit etwas passiert. Dies funktioniert in Desktop-Browsern (wie erwartet) einwandfrei, in Touch-Geräte-Browsern wird es jedoch vergrößert.
Antworten:
Hinweis (Stand 04.08.2018): Diese Lösung scheint in iOS Safari v12 + nicht zu funktionieren. Ich werde diese Antwort aktualisieren und diese Notiz löschen, sobald ich eine klare Lösung für iOS Safari gefunden habe.
Nur-CSS-Lösung
Fügen Sie
touch-action: manipulation
jedem Element hinzu, für das Sie den Doppelklick-Zoom deaktivieren möchten, wie bei der folgendendisable-dbl-tap-zoom
Klasse:Aus den
touch-action
Dokumenten (Schwerpunkt Mine):Dieser Wert funktioniert unter Android und iOS.
quelle
Ich habe das vor kurzem benutzt und es funktioniert gut auf dem iPad. Nicht auf Android oder anderen Geräten getestet (da die Website nur auf dem iPad angezeigt wird).
quelle
Ich weiß, dass dies vielleicht alt ist, aber ich habe eine Lösung gefunden, die perfekt für mich funktioniert hat. Keine Notwendigkeit für verrückte Meta-Tags und kein Stoppen des Zooms von Inhalten.
Ich bin mir nicht 100% sicher, wie geräteübergreifend es ist, aber es hat genau so funktioniert, wie ich es wollte.Dadurch wird einfach die normale Tippfunktion deaktiviert und anschließend erneut ein Standardklickereignis aufgerufen. Dies verhindert, dass das mobile Gerät zoomt, funktioniert aber ansonsten wie gewohnt.
BEARBEITEN: Dies wurde jetzt getestet und läuft in einigen Live-Apps. Scheint 100% browser- und plattformübergreifend zu sein. Der obige Code sollte in den meisten Fällen als Copy-Paste-Lösung funktionieren, es sei denn, Sie möchten vor dem Klickereignis ein benutzerdefiniertes Verhalten .
quelle
pointer-events: none
Ich wollte meine Frage nur richtig beantworten, da einige Leute die Kommentare unter einer Antwort nicht lesen. Hier ist es also:
Ich habe das nicht geschrieben, ich habe es nur modifiziert. Ich habe die Nur-iOS-Version hier gefunden: https://gist.github.com/2047491 (danke Kablam)
quelle
CSS zum Deaktivieren des Doppelzoom-Zooms global (für ein beliebiges Element):
Vielen Dank, Ross, meine Antwort erweitert seine: https://stackoverflow.com/a/53236027/9986657
quelle
document.getElementById('root').addEventListener('click', () => {})
Wenn Sie eine Version benötigen, die ohne jQuery funktioniert , habe ich die Antwort von Wouter Konecny (die auch durch Ändern dieses Kerns von Johan Sundström erstellt wurde ) geändert , um Vanille-JavaScript zu verwenden.
Fügen Sie dann einen Ereignishandler hinzu
touchstart
, der diese Funktion aufruft:quelle
myButton.addEventListener('touchstart', preventZoom);
Sie sollten die CSS-Eigenschaft
touch-action
aufnone
wie in dieser anderen Antwort beschrieben setzen: https://stackoverflow.com/a/42288386/1128216quelle
Einfach verhindert , dass das Standardverhalten
click
,dblclick
odertouchend
Ereignisse werden die Zoom - Funktion deaktivieren.Wenn Sie bereits einen Rückruf zu einem dieser Ereignisse haben, rufen Sie einfach a an
event.preventDefault()
.quelle
Wenn es jemanden wie mich , die dieses Problem mit erlebt Vue.js , einfaches Hinzufügen von .prevent den Trick:
@click.prevent="someAction"
quelle
Deaktivieren Sie das Doppeltippen, um auf Touchscreens zu zoomen. Internet Explorer enthalten.
quelle
Dadurch wird verhindert, dass Elemente in 'body' durch zweimaliges Tippen gezoomt werden. Dies kann in einen anderen Selektor geändert werden
Dies verhinderte jedoch auch, dass mein Klickereignis beim mehrmaligen Klicken ausgelöst wurde, sodass ich ein anderes Ereignis binden musste, um die Ereignisse bei mehreren Klicks auszulösen
Beim Touchstart habe ich den Code hinzugefügt, um das Zoomen zu verhindern und einen Klick auszulösen.
quelle
Ich gehe davon aus, dass ich einen
<div>
Eingabecontainerbereich mit Text, Schiebereglern und Schaltflächen habe und versehentliche Doppelklicks verhindern möchte<div>
. Das Folgende verhindert nicht das Zoomen des Eingabebereichs und bezieht sich nicht auf das Doppeltippen und Zoomen außerhalb meines<div>
Bereichs. Je nach Browser-App gibt es Variationen.Ich habe es gerade versucht.
(1) Für Safari unter iOS und Chrome unter Android ist dies die bevorzugte Methode. Funktioniert mit Ausnahme der Internet-App unter Samsung, bei der Double-Taps nicht vollständig deaktiviert werden
<div>
, sondern zumindest bei Elementen, die Taps verarbeiten. Esreturn false
wird mit Ausnahme vontext
undrange
Eingaben zurückgegeben.(2) Optional für die integrierte Internet-App unter Android (5.1, Samsung), verhindert das zweimalige Tippen auf das
<div>
, verhindert jedoch das Zoomen auf<div>
:(3) Deaktiviert für Chrome unter Android 5.1 das Doppeltippen, deaktiviert das Zoomen nicht und bewirkt nichts über das Doppeltippen in den anderen Browsern. Das Double-Tap-Inhibieren des
<meta name="viewport" ...>
ist irritierend, weil<meta name="viewport" ...>
es eine gute Praxis zu sein scheint.quelle
Verwenden von CSS-Berührungsereignissen: keine Entfernt alle Berührungsereignisse vollständig aus. Wenn ich dies hier lasse, falls jemand auch diese Probleme hat, habe ich 2 Stunden gebraucht, um diese Lösung zu finden, und es ist nur eine Zeile von CSS. https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action
quelle
Auf geht's
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
quelle