移动端常见问题总结

Posted dongkx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端常见问题总结相关的知识,希望对你有一定的参考价值。

1.判断机型:

// 判断手机是移动端还是安卓
var u = navigator.userAgent;
var isandroid = u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1; //android终端
var isios = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

 

2.用scroll来解决ios唤起软键盘时absolute定位在最下方的元素错位:

var bfscrolltop = document.body.scrollTop;//获取软键盘唤起前浏览器滚动部分的高度
    $(".txt").focus(function(){//在这里‘input.inputframe’是我的底部输入栏的输入框,当它获取焦点时触发事件
        interval = setInterval(function(){//设置一个计时器,时间设置与软键盘弹出所需时间相近
        document.body.scrollTop = document.body.scrollHeight;//获取焦点后将浏览器内所有内容高度赋给浏览器滚动部分高度
        },100)
    }).blur(function(){//设定输入框失去焦点时的事件
        clearInterval(interval);//清除计时器
        document.body.scrollTop = bfscrolltop;//将软键盘唤起前的浏览器滚动部分高度重新赋给改变后的高度
    });

    // 安卓键盘弹出处理
    var clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
    $(window).on(‘resize‘, function () {
        var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight;
        if (clientHeight > nowClientHeight) {
            console.log("安卓弹出")
        }
        else {
            $(".bottom_name").addClass("none")
        }
    });

 

 

3.用2的方法解决软键盘的问题时需要给最外层的box设置height:auto;overflow-y:scroll;但是如果后台用了lazyload插件会要求不能使用height:auto;overflow-y:scroll,因为它需要根据scroll去判断页面是否滚动,是否需要加载内容。

 

4.有些事件在ios需要双击才能触发,可以用下面人为的方法触发两次

  a.click();

  setTimeout(function(){

    a.click()

  },100)

 

 

var bfscrolltop = document.body.scrollTop;//获取软键盘唤起前浏览器滚动部分的高度    $(".txt").focus(function(){//在这里‘input.inputframe’是我的底部输入栏的输入框,当它获取焦点时触发事件        interval = setInterval(function(){//设置一个计时器,时间设置与软键盘弹出所需时间相近        document.body.scrollTop = document.body.scrollHeight;//获取焦点后将浏览器内所有内容高度赋给浏览器滚动部分高度        },100)    }).blur(function(){//设定输入框失去焦点时的事件        clearInterval(interval);//清除计时器        document.body.scrollTop = bfscrolltop;//将软键盘唤起前的浏览器滚动部分高度重新赋给改变后的高度    });
    // 安卓键盘弹出处理    var clientHeight = document.documentElement.clientHeight || document.body.clientHeight;    $(window).on(‘resize‘, function () {        var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight;        if (clientHeight > nowClientHeight) {            console.log("安卓弹出")        }        else {            $(".bottom_name").addClass("none")        }    });





以上是关于移动端常见问题总结的主要内容,如果未能解决你的问题,请参考以下文章

总结下移动端调试的一些方法

总结一下做移动端项目遇到的坑

前端开发知识之前端移动端适配总结

M端总结

第二次项目总结(移动端)

移动端开发的一些技巧总结