H5 输入框键盘弹出收起

1 . 安卓系统 下点击输入框 键盘弹出以及收起 会使得webview 的窗口高度发生变化

键盘弹出的时候:

webview的原高度 = 键盘的高度 + webview 现在的窗口高度

Ios 系统 下 键盘弹出收起不会影响webview 的窗口高度发生变化

键盘弹出的时候 可以监听focusin事件; 键盘收起的时候 可以监听focuout 事件; (focusin/focusout 支持冒泡)

但是安卓系统下 点击键盘的右边的收起 不会触发 focuout事件;  只有其他空白处使得光标失去焦点(blur) 才会触发;  所以安卓下 可以通过判断 webview 的高度变化 来 监听键盘的弹出收起; 

安卓下 
//获取原窗口的高度
      var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight;
      window.onresize = function() {
        // alert('高度发现变化')
          //键盘弹起与隐藏都会引起窗口的高度发生变化
          var resizeHeight=document.documentElement.clientHeight || 
           document.body.clientHeight;
          const activeEl = document.activeElement; // 获取当前点击的元素
          if(resizeHeight<originalHeight){
            //当软键盘弹起,在此处操作
            console.log('当软键盘弹起,在此处操作')
            if (activeEl.tagName === 'INPUT' || activeEl.tagName === 'TEXTAREA') {}
          } else {
          //当软键盘收起,在此处操作
            console.log('当软键盘收起,在此处操作')
            if (activeEl.tagName === 'INPUT' || activeEl.tagName === 'TEXTAREA') {
                activeEl.blur
            }
          }
      }

Ios 系统下
document.body.addEventListener("focusin", (e) => {

});
document.body.addEventListener("focusout", () => {
});
单独的input/textarea 监听键盘弹出、收起就监听各自的foucs/blur 事件

参考:

彻底解决H5中键盘遮挡输入框的问题 - 知乎

h5手机键盘弹出收起的处理 | Hzzly

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值