Fork me on GitHub 盒子
盒子
文章目录
  1. 修复IScroll点击BUG
    1. 版本号
    2. 针对不同机型进行IScroll配置参数click的修改
  2. 增加scrollTo数值容错处理
    1. 出现原因
    2. 解决方案

修复IScroll点击无效问题,增加scrollTo数值容错处理

修复IScroll点击BUG

由于做移动端开发,使用IScroll的的时候,在IScroll区域有需要点击时部分安卓机点击无效。若是设置click为true,则iOS需双击才能触发点击事件。

版本号

IScroll: v5.1.3

针对不同机型进行IScroll配置参数click的修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function IScroll (el, options) {
// INSERT POINT: DEFAULTS
// fix click in bad Android
this.options.click = this.fixIScrollClickInAndroid();
}
IScroll.prototype = {
version: '5.1.3',
fixIScrollClickInAndriod: function (){
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,5);
//return parseFloat(s[0]+s[3]) < 44 ? false : true}
return parseFloat(s[0]+s[2]+s[4]) <= 442 && parseFloat(s[0]+s[2]+s[4]) > 430 ? true : false}
}
}

增加scrollTo数值容错处理

在返回页面的时候需要定位,所以把第一次进入的位置存入sessionStorage了,取出来时调用scrollTo(0,pos)无效。

出现原因

IScroll对于数值设置为Number,当存入sessionStorage会转为字符串,若取出来不进行parseFloat处理,将返NaN导致无法定位

解决方案

  • 对从sessionStorage中取出来的数值,进行parseFloat处理
  • 修改IScroll关于scrollTo位置的源码,增加 || 0 操作
1
2
3
var myScroll = new Scroll("#wrapper");
window.sessionStorage.setItem("pos",myScroll.y);
myScroll.scrollTo(parseFloat(window.sessionStorage.getItem("pos"))); // 也可修改scrollTo方法做 || 0 转换为数值处理

如果能给您带去些许帮助,鄙人不甚欢心。如有错误,恳请交流指出,谢谢!
转载请注明出处:http://mcchen.club/


支持一下
扫一扫,支持McChen