前言:手上的微信H5项目做的接近尾声了,结果元旦回来没多久测试说ios端出现了bug,软键盘输完隐藏后页面不会回弹,下方会有一大块留白。之前没出现过这种问题,安卓也没问题。。测试说可能是因为最近她更新了ios版本。。。
最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试人员反馈,软键盘收起后,再滚动一下页面,下面的留白就会消失。所以只要在输入完毕后模拟一下这个“滚动”的操作,就能解决问题了。
关于这个现象出现的原因个人分析如下,仅供参考。
首先了解下window对象的scrollY属性,它返回的是当前垂直滚动的像素数,未发生滚动时值为0,向上滚动为正值。
当软键盘弹出后,页面会被软键盘顶上去,从而改变了window.scrollY的值,当软键盘收起后,页面停留在当前scrollY偏移的位置,所以下方有一大块留白。
因此可以在input失焦后让页面回滚到顶部来解决问题,当然这种解释还是有疑问的,为什么回滚到顶部以后下方多出的留白就消失了?希望知道的朋友能留言解疑。
1、如果使用jquery,修改起来就比较方便
2、如果使用vue,要修改的地方不是很多的话,直接用vue的v-on添加blur事件即可,以input为例
如果修改的地方比较多,建议使用addEventListener循环添加事件,在组件销毁记得remove就好,以input为例
3、因为这个问题只出现在ios端,所以可以在添加事件前判断是不是在ios系统上运行