如何在移动Safari中提交表单后重置缩放,同时保持用户的可伸缩性?

当用户从iPhone / iPadlogin到我的应用程序时,Safari(帮助)在用户填写用户名/密码字段时放大。 但是当表单被提交并且我们login时,我们不会重新加载页面(这是一个单页面应用程序),所以缩放从不重置。 所以应用程序总是以放大的比例开始。

我曾经看过杰里米·凯斯 ( Jeremy Keith)的解决scheme ,它成功地重置了缩放,但是也阻止了用户将来的缩放/缩放,因为他设置了视口的maximum-scale

喜欢这个:

 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'; } 

有没有人看到一个很好的解决scheme后重新提交表单提交,没有冻结了视口后?

我发现工作是一个小黑客,但似乎有效。 基本上,在表单提交,我设置maximum-scale ,然后立即删除它。 希望这有助于某人。

 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'); } } }