Es ist möglich, die Skalierung von Webseiten in Safari unter iOS 10 zu verhindern, aber es wird mehr Arbeit von Ihrer Seite erfordern. Ich denke, das Argument ist, dass ein gewisser Schwierigkeitsgrad verhindern sollte, dass Entwickler von Frachtkult "user-scalable = no" in jedes Ansichtsfenster-Tag fallen lassen und es für Benutzer mit Sehbehinderung unnötig schwierig machen.
Trotzdem würde ich gerne sehen, dass Apple seine Implementierung so ändert, dass es eine einfache Möglichkeit (Meta-Tag) gibt, das Doppeltippen zum Zoomen zu deaktivieren. Die meisten Schwierigkeiten beziehen sich auf diese Interaktion.
Mit so etwas können Sie das Zoomen stoppen:
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 von diesem Listener nicht verhindert wird.
Das Deaktivieren von Double-Tap-to-Zoom ist ähnlich. Sie deaktivieren jedes Tippen auf das Dokument, das innerhalb von 300 Millisekunden nach dem vorherigen Tippen 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 eingerichtet haben, wird die Fokussierung auf eine Eingabe automatisch gezoomt. Da Sie den manuellen Zoom größtenteils deaktiviert haben, ist das Zoomen jetzt fast unmöglich. Stellen Sie sicher, dass die eingegebene Schriftgröße> = 16px ist.
Wenn Sie versuchen, dies in einem WKWebView in einer nativen App zu lösen, ist die oben angegebene Lösung sinnvoll. Dies ist jedoch eine bessere Lösung: https://stackoverflow.com/a/31943976/661418 . Und wie in anderen Antworten erwähnt, hat Apple in iOS 10 Beta 6 jetzt eine Flagge bereitgestellt, um das Meta-Tag zu ehren.
Update Mai 2017: Ich habe die alte Methode "Länge der Berührungen beim Berühren überprüfen" zum Deaktivieren des Pinch-Zooms durch einen einfacheren Ansatz "Prüfen von event.scale on touchmove" ersetzt. Sollte für alle zuverlässiger sein.