iScroll在安卓下无法点击的问题
发布在前端小菜鸡的填坑之路2016年2月3日view:3545前端开发移动开发Kaylyn
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

原文出处:https://github.com/ForeverPx/blogs/blob/master/2016/01/iscroll_android_chrome.md 转载请注明出处。

iScroll解决安卓下无法点击在网上已经有了解决方案,代码如下:

function iScrollClick(){
    if (/iPhone|iPad|iPod|Macintosh/i.test(navigator.userAgent)) return false;
    if (/Chrome/i.test(navigator.userAgent)) return (/Android/i.test(navigator.userAgent));
    if (/Silk/i.test(navigator.userAgent)) return false;
    if (/Android/i.test(navigator.userAgent)) {
       var s=navigator.userAgent.substr(navigator.userAgent.indexOf('Android')+8,3);
       return parseFloat(s[0]+s[3]) < 44 ? false : true
    }
}

myScroll = new IScroll("#ID", {
    click:iScrollClick()
});

这样看上去是没什么问题,但在实际开发中,会有一个坑:在Android4.4+的手机上,是要区分webview和chrome的, 按照上面的正则,会导致chrome下使用iscroll后无法点击。

上面的正则无法判断在Android4.4+的手机上,用户到底是用的是自带的webview还是chrome浏览器。 这两个浏览器调用userAgent所显示的信息几乎一样,不用之处只有chrome的版本号。 webview使用的版本号会比真正的chrome的版本号小很多。所以只能利用这个版本号来区分这两个浏览器。修改后的代码如下

iScrollClick = function(){
    if (/iPhone|iPad|iPod|Macintosh/i.test(navigator.userAgent))
        return false;
    if (/Silk/i.test(navigator.userAgent))
        return false;
    if (/Android/i.test(navigator.userAgent)) {
        var chromeVersion = 0;
        if (/Chrome/i.test(navigator.userAgent)){
            chromeVersion = navigator.userAgent.substr(navigator.userAgent.indexOf('Chrome')+7,2);
        }
        var s=navigator.userAgent.substr(navigator.userAgent.indexOf('Android')+8,3);
        if(parseFloat(s[0]+s[3]) < 44){
            if(chromeVersion < 40){
                return false;
            }else{
                return true;
            }
        }
        return true;
    }
}

这里我是认为如果chrome的版本号小于40,就为webview,现在的webview版本号还停留在27。

评论
发表评论
暂无评论
WRITTEN BY
PUBLISHED IN
前端小菜鸡的填坑之路

前端小菜鸡的填坑之路

我的收藏