H5的IOS端软键盘错位兼容解决

在IOS12以上的微信端,iPhoneX和华为保时捷型号微信购物时,input弹出后结算按钮点击无反应。分析发现是IOS端第三方输入法软键盘弹出后焦点无法复位导致,还给出了实际调试代码,需在页面script内加入相关内容并给input加class。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考至: https://mp.weixin.qq.com/s/u1KIkWm-1VFu4r8VzvB5Dg

问题描述:在IOS12以上的微信端,iPhoneX的型号和华为保时捷的型号的微信购物,出现input弹出后结算按钮点击无反应的情况。

分析:是由于IOS端第三方输入法的软键盘弹出后,焦点无法复位。

实际调试代码如下:

在页面script内加入,将需要调整的input加上class=“input”。

<script>    
    //20190430 susie h5软键盘错位兼容处理
    // 监听函数
    function listenKeybord(jinput) {    
        //判断是否是ios
        var ua = window.navigator.userAgent.toLocaleLowerCase();
        var isIOS = /iphone|ipad|ipod/.test(ua);
       // var isAndroid = /android/.test(ua);   
       //判断是不是ios ios进行处理
        if (isIOS) {
           // IOS 键盘弹起:IOS 和 Android 输入框获取焦点键盘弹起
            jinput.addEventListener('focus', function () {               
                //alert('IOS 键盘弹起啦!');
                // IOS 键盘弹起后操作
                //键盘弹起后逻辑代码
            }, false); 
            jinput.addEventListener('blur', function () {                              
                //alert('IOS 键盘收起啦!');
                //收齐后逻辑代码,让上面的下来
                var wechatInfo = window.navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
                if (!wechatInfo) return;
                var wechatVersion = wechatInfo[1];
                var version = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
                if(+wechatVersion.replace(/\./g, '') >= 674 && +version[1] >= 12){
                  window.scrollTo(0, Math.max(document.body.clientHeight, document.documentElement.clientHeight));
                }
            });
        }
    }
    //页面加载完成后遍历所有input执行监听
    jQuery(document).ready(function(){
        var vinputs = document.querySelectorAll('.input');
        for (var i = 0; i < vinputs.length; i++) {
            listenKeybord(vinputs[i]);
        }
    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值