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



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

我看过Jeremy Keith的解决方案,它成功地重置了缩放,但也防止了用户将来缩放/缩放,因为他设置了视口的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';
}

有人见过一个很好的解决方案,可以在表单提交后重新设置种子,而不会在提交后冻结视口吗?

我发现工作有点麻烦,但似乎很有效。基本上,在提交表单时,我会设置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');
}
}
}

最新更新