Ich habe mein iPhone 6 Plus auf iOS 10 Beta Version aktualisiert und gerade festgestellt, dass man in Mobile Safari jede Webseite durch doppeltes Tippen oder Kneifen zoomen kann ABER den "user-scalable=no" Code im Meta-Tag. Ich weiß nicht, ob es ein Fehler oder eine Funktion ist. Wenn es als eine Funktion betrachtet wird, wie können wir das Zoomen des Ansichtsfensters in iOS 10 Safari deaktivieren?
aktualisiert auf iOS 11/12 Release, iOS 11 und iOS 12 Safari respektieren immer noch NICHT das user-scalable=no
meta tag.
Es ist möglich, die Skalierung von Webseiten in Safari auf iOS 10 zu verhindern, aber es wird mehr Arbeit für Sie bedeuten. Ich schätze, das Argument ist, dass ein gewisser Schwierigkeitsgrad die Cargo-Cult-Entwickler davon abhalten sollte, "user-scalable=no" in jedes Viewport-Tag einzubauen und es sehbehinderten Nutzern unnötig schwer zu machen.
Dennoch würde ich es gerne sehen, wenn Apple seine Implementierung so ändern würde, dass es eine einfache (Meta-Tag) Möglichkeit gibt, Double-Tap-to-Zoom zu deaktivieren. Die meisten Schwierigkeiten hängen mit dieser Interaktion zusammen.
Man kann das Auf- und Zuziehen mit so etwas unterbinden:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
Beachten Sie, dass, wenn tiefere Ziele stopPropagation für das Ereignis aufrufen, das Ereignis das Dokument nicht erreicht und das Skalierungsverhalten nicht durch diesen Listener verhindert wird.
Die Deaktivierung von Double-Tap-to-Zoom ist ähnlich. Sie deaktivieren jedes Antippen des Dokuments, das innerhalb von 300 Millisekunden nach dem vorherigen Antippen erfolgt:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Wenn Sie Ihre Formularelemente nicht richtig einrichten, wird beim Fokussieren auf eine Eingabe automatisch gezoomt, und da Sie den manuellen Zoom größtenteils deaktiviert haben, wird es nun fast unmöglich sein, den Zoom wieder aufzuheben. Stellen Sie sicher, dass die Schriftgröße der Eingabe >= 16px ist.
Wenn Sie versuchen, dieses Problem in einem WKWebView in einer nativen Anwendung zu lösen, ist die oben genannte Lösung praktikabel, aber dies ist eine bessere Lösung: https://stackoverflow.com/a/31943976/661418. Und wie in anderen Antworten erwähnt, hat Apple in iOS 10 Beta 6 nun ein Flag zur Verfügung gestellt, um das Meta-Tag zu berücksichtigen.
Update Mai 2017: Ich habe die alte 'check touches length on touchstart' Methode zur Deaktivierung des Pinch-Zooms durch einen einfacheren 'check event.scale on touchmove' Ansatz ersetzt. Das sollte für alle zuverlässiger sein.
Dies ist eine neue Funktion in iOS 10.
Aus den iOS 10 Beta 1 Versionshinweisen: Um die Zugänglichkeit von Websites in Safari zu verbessern, können Benutzer jetzt auch dann mit dem Finger zoomen, wenn eine Website "user-scalable=no" im Ansichtsfenster einstellt.
Ich gehe davon aus, dass wir bald ein JS-Add-on sehen werden, um dies auf irgendeine Weise zu deaktivieren.
Es scheint, dass dieses Verhalten in der neuesten Beta, die zum Zeitpunkt der Erstellung dieses Artikels Beta 6 ist, geändert wurde.
Aus den Versionshinweisen für iOS 10 Beta 6:
WKWebView
respektiert nun standardmäßiguser-scalable=no
von einem Viewport. Clients vonWKWebView
können die Zugänglichkeit verbessern und Benutzern erlauben Pinch-to-Zoom auf allen Seiten ermöglichen, indem sie dieWKWebViewConfiguration
EigenschaftignoresViewportScaleLimits
aufYES
setzen.
In meinen (sehr begrenzten) Tests kann ich dies jedoch noch nicht bestätigen.
Bearbeiten: Verifiziert, iOS 10 Beta 6 respektiert user-scalable=no
standardmäßig für mich.