提问者:小点点

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


当用户从iPhone/iPad登录我的应用程序时,Safari会在用户填写用户名/密码栏时放大(很有帮助)。但是当提交表单并登录时,我们不会重新加载页面(这是一个单页面应用程序),所以缩放永远不会重置。所以应用程序总是以放大的比例启动。

我看了Jeremy Keith的解决方案,它成功地重置了缩放,但也防止了用户将来的缩放/缩放,因为他设置了视口的最大缩放

像这样:

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

有没有人看到一个很好的解决方案,可以在表单提交后重置它,而不会冻结视口?


共1个答案

匿名用户

我发现这个方法有点粗糙,但似乎很有效。基本上,在表单提交时,我设置了< code>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');
      }
   }
}