H5页面遇到的BUG

最近写了个H5的小页面,遇到一些兼容问题,记录下(主要针对QQ和微信 ),


一、.调 用手机相机或相册功能:

<input type="file" name="imgfile" id="camera">

一开始是这样写的:

<input type="file" name="imgfile" accept="image/*" capture="camera" id="camera">

经过测试发现这种写法并不能同时兼容安卓和IOS手机,具体表现为:

安卓手机在QQ和微信浏览器都可以正常使用,浏览器是直接调相机,不能选择相册(因需求对浏览器没要求,暂不做处理)

IOS手机最开始qq和微信也是可以的,后来升级了个10.3.1的版本就不能选择相册了,估计苹果对相册权限做了处理什么的吧,具体也不清楚……反正结果就是相册不能选了


从网上找了相关资料,换了另一种写法试了试:

<input type="file" accept="image/*; capture=camera" name="imgfile" id="camera">
效果:

安卓不能调相机了,直接打开图片选择面板……

IOS可以正常选择相机或相册


综合考虑,为了实现功只能想到这样处理代码(JS控制):

var u = navigator.userAgent.toLowerCase();
var isApple = /(iphone|ipad|ipod|ios)/i.test(u);
var isAndroid = /android/i.test(u);
if(isApple){ //apple终端 $('#camera').attr('accept','image/*;capture=camera');}else if(isAndroid){ //安卓终端 $('#camera').attr('accept','image/*').attr('capture','camera');}


二、刷新页面在安卓微信浏览器中不起作用的问题

history.go(0);

现象:

IOS  QQ和微信正常使用

安卓客户端 QQ李没问题,微信上无反应

原因:

缓存问题,安卓上面微信里执行刷新操作时,页面无改动的情况下是从缓存中加载文档,并没有真的执行刷新,所以点击不会刷新页面

解决办法:

分情况处理,区分安卓和IOS 区分微信浏览器, 使用window.location.href

function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}
if(isApple){
    //apple终端
    $('.errorFresh').on('click',function () {
        history.go(0); //刷新
    });
}else if(isAndroid){
    //安卓终端
    if(isWeiXin()){
        $('.errorFresh').on('click',function () {
            window.location.href='url'; //跳转
        });
    }
}



以上,并不是最好的方法,至少能解决问题。
希望以后能发现更好的办法。


——每一天都是进步






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值