zoukankan      html  css  js  c++  java
  • 移动端常见问题总结

    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")        }    });

    5.解决部分安卓机点击图片放大的效果::::

    pointer-events: none;

    6.可以通过判断页面高度与屏幕高度的系数来判断是否唤起软键盘(不用考虑单手模式),比如目前高度没有原来的三分之二高肯定是唤起了软键盘

  • 相关阅读:
    miniui表格设置百分比不生效
    sql delete删除不存在的记录 提示成功,如何判断sql执行成功
    共享程序集和强命名程序集(下)
    共享程序集和强命名程序集(上)
    生成、打包、部署和管理应用程序及类型(下)
    生成、打包、部署和管理应用程序及类型(上)
    clr的执行模型(下)
    clr的执行模型(中)
    使用时间戳解决缓存问题
    sql修改字段类型为clob
  • 原文地址:https://www.cnblogs.com/dongkx/p/9120737.html
Copyright © 2011-2022 走看看