当软键盘弹出时,我想获取准确的视口大小。目前我正在使用以下代码在头部使网站具有响应性:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
我意识到的是,当软键盘出现时,它使用设备高度作为视口高度并将其余部分向上推动-这使我认为它从width=device-width选项获取其高度。
在启动软键盘后使用以下代码:
setTimeout(function() {
viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'height=auto');
}, 300)
使用jQuery获取高度可以在Android上显示正确的结果 - 即虚拟键盘不可见时的可视视口大小,但在iOS上却不能。我得到一个随机数,我认为这源于其余的meta标签不存在,所以我得到了一个缩小版本的网站以及一个像75或100的数字(在iPhone 4s上)。
我还尝试在打开键盘后创建一个固定的元素,使其使用视口高度并具有top:0;和bottom:0;属性,但我仍然得到原始高度。
更接近的解决方案是将视口meta标签高度设置为固定值,可以通过jQuery的$(window).height()
进行拾取,这意味着在启动键盘后meta标签实际上有所作用,但固定高度没有真正的价值。
我看过很多关于此的话题,但没有一个解决方案。有解决此问题的人吗?