Il est possible d'empêcher la mise à l'échelle de la page Web dans Safari sur iOS 10, mais cela impliquera plus de travail de votre part. Je suppose que l'argument est qu'un certain degré de difficulté devrait empêcher les développeurs du culte de la cargaison de laisser tomber "user-scalable = no" dans chaque balise de la fenêtre et de rendre les choses inutilement difficiles pour les utilisateurs malvoyants.
Néanmoins, j'aimerais voir Apple modifier sa mise en œuvre afin qu'il existe un moyen simple (méta-balise) de désactiver le double-clic pour zoomer. La plupart des difficultés sont liées à cette interaction.
Vous pouvez arrêter le pincement pour zoomer avec quelque chose comme ceci:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
Notez que si des cibles plus profondes appellent stopPropagation sur l'événement, l'événement n'atteindra pas le document et le comportement de mise à l'échelle ne sera pas empêché par cet écouteur.
La désactivation du double-tap-to-zoom est similaire. Vous désactivez tout tap sur le document se produisant dans les 300 millisecondes du tap précédent:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Si vous ne configurez pas correctement vos éléments de formulaire, vous concentrer sur une entrée effectuera un zoom automatique, et comme vous avez principalement désactivé le zoom manuel, il sera désormais presque impossible de dézoomer. Assurez-vous que la taille de la police d'entrée est> = 16px.
Si vous essayez de résoudre cela dans un WKWebView dans une application native, la solution donnée ci-dessus est viable, mais c'est une meilleure solution: https://stackoverflow.com/a/31943976/661418 . Et comme mentionné dans d'autres réponses, dans iOS 10 bêta 6, Apple a maintenant fourni un drapeau pour honorer la balise meta.
Mise à jour de mai 2017: j'ai remplacé l'ancienne méthode de désactivation du zoom par pincement par une approche plus simple de vérification de l'événement à l'échelle sur touchmove. Devrait être plus fiable pour tout le monde.