Skip to content

Files

Latest commit

1dbd0ea · Feb 3, 2016

History

History
55 lines (47 loc) · 2.11 KB

iscroll_android_chrome.md

File metadata and controls

55 lines (47 loc) · 2.11 KB

#iScroll在安卓下无法点击的问题

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。

原文出处:http://www.foreverpx.cn 转载请注明出处。