微信浏览器软键盘弹出与页面resize的问题
使用微信打开网页,弹出软键盘时遇到的兼容问题
过去开发中遇到过很多这种情况,页面底部需要固定定位一个按钮,广告栏或者菜单栏,页面中有表单项需要填写,在打开手机虚拟键盘的时候,底部固定定位的元素会处在软键盘上方,把本来就所剩无几的页面几乎都挡住了(一般发生在不使用框架的单独页面中),而浏览器并没有为开发者提供呼出软键盘的事件监听方法。
之前我的解决方法是
window.onresize = function(){
if(document.body.clientHeight<500){
document.getElementById('底部元素id').style.display = 'none';
}else{
if(document.getElementById('底部元素id').style.display == 'none'){
document.getElementById('底部元素id').style.display = 'block';
}
}
}
当用户呼出软键盘时,页面会触发resize事件,页面大小变小,高度只有原有高度减去键盘高度的高度,一般都小于500,
同时市面上也几乎没有屏幕原有高度就小于500的手机,所以在resize触发后判断,如果document.body.clientHeight<500
即视为呼出软键盘,此时可以随意处理碍眼的元素了,只是要记得键盘收回后能一切复原就行。
但是现在使用微信浏览分享网页或者扫码查看网页的情况越来越普遍,而在微信中这个方法却行不通了。
准确地说,是情况变得不稳定,安卓手机还正常,但是在ios中,正常的情景是:
点击输入框-弹出软键盘-底部元素自动处在键盘下方被覆盖(这是未作任何处理的情况,可以说已经解决了问题),
可惜会有一定的几率出现底部元素跑到键盘上方遮挡其他元素的情况。而我上面的代码则完全没有响应,底部元素并没有隐藏。
在一番检查之后发现了原因,resize事件根本没有被触发。
我们知道clientHeight指的是网页可视区高度,呼出键盘它并没有改变,也没有将页面顶上去,而是自动定位在了获取焦点的表单元素上,虚拟键盘覆盖在了原来的页面上,所以clientHeight没有改变,更不会小于500。
PS:经检查,并不是所有ios设备都存在此现象,目前发现的环境为iphone7,微信内打开,输入法不限。
android微信使用的是qq浏览器X5内核,关于此浏览器的更多兼容问题及解决办法文章末尾会有转载的链接供查阅,ios不允许使用其他浏览器,用的应该是苹果内核,但是ios高低版本之间还有差别,也可能是safari版本不同造成的。这个问题在搞清楚原因之后也很容易地找到了替代解决方法。
$('表单父元素').on('focus','input',function(){
document.getElementById('底部元素').style.display = 'none';
})
$('表单父元素').on('blur','input',function(){
document.getElementById('底部元素').style.display = 'block';
})
表单元素获取焦点时隐藏底部元素,失去焦点时重新显示。页面比较简单,所以这么写也没什么问题。
总结:
最新iphone微信内置浏览器中的虚拟键盘会覆盖在原有页面上,不会改变页面可视区的大小。
弹出虚拟键盘时,获取焦点元素会自动滚动到键盘上方的区域方便查看,但是因为这个原因,当点击页面靠下的表单项时,
固定定位在底部的元素会有几率显示在虚拟键盘区域上方遮盖其它内容,在制作存在这种交互可能的产品时应多加注意。
qq浏览器X5内核常见问题
http://blog.csdn.net/kongjiea/article/details/49176153
微信浏览器软键盘弹出与页面resize的问题的更多相关文章
- js防止安卓手机软键盘弹出挤压页面导致变形的方法
5防止安卓手机软键盘弹出挤压页面导致变形的方法 输入框定位在底部,手机端打开,输入框聚焦后软键盘打开为什么会瞬间自动关闭呢? 先看看问题: 1.原来是这样的: 2.在苹果手机里面是正常的: 3.到了安 ...
- Android软键盘弹出,覆盖h5页面输入框问题
之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:当输入框在可视区底部或者偏下的位 ...
- H5页面 绝对定位元素被 软键盘弹出时顶起
H5页面 绝对定位元素被 软键盘弹出时顶起 在h5页面开发的过程中,我们可能会遇到下面这个问题,当页面中有输入框的时候,系统自带的软盘会把按钮挤出原来的位置.那么我们该怎么解决呢?下面列出一下的方法: ...
- 小米note3,华为手机,软键盘弹出之后,页面上定位的元素布局会乱掉
原因:可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').he ...
- js 移动端之监听软键盘弹出收起
js 移动端关于页面布局,如果底部有position:fixed的盒子,又有input,当软键盘弹出收起都会影响页面布局.这时候Android可以监听resize事件,代码如下,而ios没有相关事件. ...
- Android软键盘弹出时布局问题
最近项目需要做一个类似聊天室的模块,基于Socket实现的,这部分稍后一段时间再做总结,功能上的相关点都实现了小例子也做出来了,最后发现一个比较腻歪的问题就是软键盘弹出时总是会把标题“挤出”屏幕,(无 ...
- 解决react-native软键盘弹出挡住输入框的问题
解决react-native软键盘弹出挡住输入框的问题 写登录页面,整体界面居中之后就出现软键盘弹出挡住输入框,用户体验不好的情况.用了RN官方的KeyboardAvoidingView组件,会有多出 ...
- ionic项目中 软键盘弹出之后的问题:
Android SDK目前提供的软键盘弹出模式接口只有两种: 一是弹出时自动回冲界面,将所有元素上顶: 一种则是不重绘界面,直接将控件元素遮住: 1. ionic 中弹出键盘遮挡住输入框(覆盖 ...
- 【转】swift实现ios类似微信输入框跟随键盘弹出的效果
swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...
随机推荐
- Windows下安装和卸载MangoDB服务 --MangoDB
1.创建存放的数据文件夹和日志文件 2.安装MangoDB服务:(如数据文件夹路径是:d:/MongoDB/db/,日志文件路径:d:/MongoDB/log.txt) mongod --dbpath ...
- jquary高级和ajax
jquary高级: 1.动画 1.三种方式显示与隐藏元素 1.默认显示和隐藏的方式 1.show([speed],[easing],[fn]):显示 [speed],[easing],[fn] spe ...
- 菜鸡学C语言之寻根溯源
题目描述 Mogg最近翻了翻自己家的族谱,想康康祖先是谁.但是族谱因为年久失修太乱了,他现在只整理出来了一系列父子关系,你能帮他找一找直系亲属中辈分最大的一位吗?(即父亲的父亲的父亲……) 输入 第1 ...
- list内含有元组或字典
a=[(")] for k,v,i in a: print(k,v,i) 结果: 1 21 12 2 31 32 list里含元组,可以用这种遍历输出挨个元素 但list里含字典时,这样就只 ...
- centos版本位数查看
查看版本 cat /etc/issue cat /etc/redhat-release 查看位数 uname -a cat /proc/version 1. getconf LONG_BIT or ...
- zzw原创_ipv6下环境配置防火墙及FTP处理一例
缘由:公司这段时间要将原IPV4地址切换到IPV6,在环境配置的过程中,碰到一坑,平时不太注意的问题,在IPV6下却放大了 实现目标:在IPV6下,机器A可以FTP到机器B,可以传输.下载文件 A机器 ...
- orangepi one AP模式配置
前两天买了一块orangepi one开发板,目的是做个局域网共享目录,具体共享协议用samba:这块板子有两个网卡,一个有线一个无线:有线主要用来ssh登陆调试,修改配置. 首先下载armbian的 ...
- 20175212课下作业 MyCP
20175212课下作业 MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2 ...
- argument 1 must be 2-item sequence, not int
看了 https://blog.csdn.net/qq_18250439/article/details/80872425 的说明,才明白为什么错了. 当使用Python3-pygame时出现Typ ...
- Dubbo死磕之扩展点加载ExetnsionLoader
dubbo的SPI机制与JDK的SPI机制对比 dubbo一款阿里一款开源的RPC框架,他本身是一款非常复杂的系统,我们主要针对里边的一些核心点来展开分析,其中duboo里的一种核心机制 ...