H5监听键盘弹起收回,用法超简单!兼容Android、iOS。

7 篇文章 0 订阅
1 篇文章 0 订阅
这篇博客介绍了一个简洁的JavaScript代码片段,用于在Android和iOS设备上监听H5页面中键盘的弹出(KeyboardUp)和收起(KeyboardDown)事件。通过监听窗口的resize和元素的focus/focusout事件,实现对不同平台键盘状态的判断并触发自定义的KeyboardUp和KeyboardDown事件。
摘要由CSDN通过智能技术生成

引入以下代码,仅需2行代码即可监听!

/**
 * 兼容Android、iOS各浏览器
 * H5键盘监控弹出(KeyboardUp)、收起(KeyboardDown)事件定义
 * auth: huaicheng151201@163.com
 * time: 2020.11.20
 * 用法:
 * 与click事件的绑定用法无异,如:
    window.addEventListener("KeyboardUp",function() {
        //键盘弹起来了
    },false);
    window.addEventListener("KeyboardDown",function() {
        //键盘收起来了
    },false);
 *
 */
;(function(window){
    if(!window || !navigator) return;
    var u = navigator.userAgent;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

    var KeyboardUpEvent = document.createEvent("KeyboardEvent");
    KeyboardUpEvent.initEvent("KeyboardUp",true,true);

    var KeyboardDownEvent = document.createEvent("KeyboardEvent");
    KeyboardDownEvent.initEvent("KeyboardDown",true,true);

    if(isAndroid) {
        var originalHeight = document.documentElement.clientHeight || document.body.clientHeight;
        window.onresize = function () {
            var resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
            if (resizeHeight - 0 < originalHeight - 0) {
                document.dispatchEvent(KeyboardUpEvent);
            } else {
                document.dispatchEvent(KeyboardDownEvent);
            }
        }
    } else if(isiOS){
        document.body.addEventListener('focusin', () => {
            document.dispatchEvent(KeyboardUpEvent);
        })
        document.body.addEventListener('focusout', () => {
            document.dispatchEvent(KeyboardDownEvent);
        })
    } else {
        throw "无法识别浏览器机型,请检查navigator.userAgent是否被重新定义过."
    }
})(window);

 

然后,需要在监听的地方:

window.addEventListener("KeyboardUp",function() {
    //"键盘弹起来了";
},false);

window.addEventListener("KeyboardDown",function() {
    //"哎呀,键盘收起来了";
},false);

   开心的玩耍去吧!!!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值