Comment puis-je réinitialiser le zoom après la soumission de formulaire dans Safari mobile, tout en maintenant l'évolutivité de l'utilisateur par la suite?

Lorsqu'un utilisateur se connecte à mon application à partir d'un iPhone / iPad, Safari (de manière utile) s'intègre alors que l'utilisateur remplit les champs nom d'utilisateur / mot de passe. Mais lorsque le formulaire est soumis et que nous les identifions, nous ne rechargons pas la page (c'est une application de page unique), de sorte que le zoom n'est jamais réinitialisé. Ainsi, l'application est toujours démarrée à une échelle agrandie.

J'ai regardé la solution de Jeremy Keith , qui réinitialise avec succès le zoom, mais empêche également l'ajustement / zoom futur de l'utilisateur, car il définit l' maximum-scale de la fenêtre.

Comme ça:

 var viewportmeta = document.querySelector('meta[name="viewport"]'); if (viewportmeta) { viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0'; } 

Est-ce que quelqu'un a vu une belle solution pour réagir après une soumission de formulaire, sans congélérer la fenêtre après?

Ce que j'ai trouvé pour travailler, c'est un petit hack, mais semble efficace. Fondamentalement, lors de la soumission de formulaire, je définis l' maximum-scale , puis je l'en supprime immédiatement. J'espère que ça aide quelqu'un.

 element.on('submit', function(event) { if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) { var viewportmeta = document.querySelector('meta[name="viewport"]'); if (viewportmeta) { viewportmeta.setAttribute('content', 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0'); viewportmeta.setAttribute('content', 'width=device-width, minimum-scale=1.0, initial-scale=1.0'); } } }