JS 表单弹出键盘兼容性处理

在我们日常前端开发或者工作中,经常会遇到HTML页面提交表单,弹出手机键盘出现各种各样的兼容性问题。android终端还是ios终端弹出异常等。

下面总结了基础的处理弹出键盘的兼容性问题,以供参考。


//判断是android终端还是ios终端 
$("document").ready(function () {
    var m = navigator.userAgent;
    var isAndroid = m.indexOf('Android') > -1 || m.indexOf('Adr') > -1; //android终端
    var isIos = !!m.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端       
    var timer;
    if (isIos) {
        // ios 弹出与收起软键盘执行事件
        document.body.addEventListener('focusin', () => { //软键盘弹起事件
            $(".footer").css('position', 'relative');
            $('.mask').css({'height':'200%','top':'-50%'});
             window.addEventListener("touchmove", () => {
                $("input").blur();
            });
        })
        document.body.addEventListener('focusout', () => { //软键盘关闭事件
            $(".footer").css('position', 'fixed');
            $('.mask').css('height','100%');
            // 解決ios端用微信打开页面,收起软键盘后,底部出现空白问题
            setTimeout(() => {
                const scrollHeight =
                    document.documentElement.scrollTop || document.body.scrollTop || 0;
                window.scrollTo(0, Math.max(scrollHeight - 1, 0));
            }, 100);
        })
    }
    if (isAndroid) {
        // android 弹出与收起软键盘执行事件
        const innerHeight = window.innerHeight;
        window.addEventListener('resize', () => {
            const newInnerHeight = window.innerHeight;
            if (innerHeight > newInnerHeight) {
                // 键盘弹出事件处理
                $(".footer").hide();
            } else {
                // 键盘收起事件处理
                $(".footer").show();
            }
        });
    }
});


点赞0
点击评论0
收藏0
浏览 51
 

还没有评论,快来发表第一个评论吧

免责声明:凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,注册用户和一般页面游览者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任(包括侵权责任、合同责任和其它责任)
*尊重作者,转载请注明出处!