Javascript web应用程序,控制iPhone在输入焦点和模糊上的缩放
几年前,我创建了一个web应用程序(在LAMP后端上使用JS/CSS/HTML),一直运行良好。客户现在在他的iPhone上使用它,并报告说,当登录屏幕上有两个输入时,窗口放大“太多”,当他输入完输入后,它不会放大到“正常”的放大级别(从他发送的屏幕抓图来看,它看起来会缩小到“正常”和输入时使用的放大级别之间) 有可能控制这两种行为吗?我读过关于用户可伸缩元的文章:0,但听起来要么A)根本不起作用,要么B)完全阻止缩放 我认为第二个问题更为关键(在用户输入文本后,它应该缩放回“正常”比例) 我要再次提到的是,这是一个通用的web应用程序,而不是“iPhone应用程序”(它是基于传统的web技术构建的,不是Cocoa或Objective-C)。我甚至没有iPhone或Mac电脑可以在上面使用模拟器,我看到的windows模拟器似乎只不过是图形中的iFrameJavascript web应用程序,控制iPhone在输入焦点和模糊上的缩放,javascript,zooming,iphone,iphone-web-app,Javascript,Zooming,Iphone,Iphone Web App,几年前,我创建了一个web应用程序(在LAMP后端上使用JS/CSS/HTML),一直运行良好。客户现在在他的iPhone上使用它,并报告说,当登录屏幕上有两个输入时,窗口放大“太多”,当他输入完输入后,它不会放大到“正常”的放大级别(从他发送的屏幕抓图来看,它看起来会缩小到“正常”和输入时使用的放大级别之间) 有可能控制这两种行为吗?我读过关于用户可伸缩元的文章:0,但听起来要么A)根本不起作用,要么B)完全阻止缩放 我认为第二个问题更为关键(在用户输入文本后,它应该缩放回“正常”比例) 我要
谢谢如果您离开用户缩放选项,则由用户返回网站原始缩放比例。每次打开键盘或组合框时,处于纵向模式的Iphone safary浏览器都会进行放大。然后它不会缩放回原始比例(必须通过双击屏幕或挤压屏幕来完成…) 另一个选项是不允许用户使用视口元标记缩放
<meta name="viewport" id="view" content="user-scalable=no, width=device-width, initial-scale=1.0" />
当键盘打开或微调器打开时,iphone不会缩放
我目前正在寻找一种解决方法(合并缩放的可能性,避免键盘打开时缩放),但我没有找到任何方法来做到这一点 我用viewport解决了这个问题:正如您所说,当没有启用用户缩放时,打开键盘或组合不会进行缩放,但随后您会为用户取消缩放功能 我在选择组合时禁用视口缩放,然后在一秒钟后恢复缩放选项:
document.documentElement.addEventListener("touchstart", function (event) {
if((event.target.nodeName == "SELECT") || (event.target.nodeName == "INPUT") || (event.target.nodeName == "TEXTAREA")) { //it is a combo
document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=no');
setTimeout(function () {
document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=yes');
}, 1000);
}
}, true);
并不是说我的视口将“视图”作为id
是的,我知道这不是最好的解决方案,但它很管用…首先,如果这不是一个要求,我建议你让你的客户前置一部iPhone进行测试,但如果是我,我会让他先买一部iPhone,以确保你花时间使你的应用程序与iPhone兼容,从而得到补偿。