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

我的博客:session

https://chenjiahao.xyzapp

==============this

最近半年都处于一个很是忙碌的状态,直到如今才有功夫腾出时间记录这段时间以来踩过的一个个坑。spa

今天先记录关于IScroll 5.1.3版本的坑吧,以及本身打的一个小补丁prototype

=============================code

调用IScroll的时候,在IScorll区域有须要点击时部分安卓机点击无效。若设置click为true,则IOS需双击才能触发。 blog

解决方案:针对不一样机型进行iscroll配置参数click的修改。token

 1 function IScroll (el, options) {
 2 // INSERT POINT: DEFAULTS
 3     // fix click in bad Andriod
 4     this.options.click = this.fixIScrollClickInAndriod();
 5 }
 6 IScroll.prototype = {
 7     version: '5.1.3',
 8     fixIScrollClickInAndriod: function (){
 9         if (/iPhone|iPad|iPod|Macintosh/i.test(navigator.userAgent)) return false;
10         if (/Chrome/i.test(navigator.userAgent)) return (/Android/i.test(navigator.userAgent));
11         if (/Silk/i.test(navigator.userAgent)) return false;
12         if (/Android/i.test(navigator.userAgent)) {
13             var s = navigator.userAgent.substr(navigator.userAgent.indexOf('Android')+8,5);
14             //return parseFloat(s[0]+s[3]) < 44 ? false : true}
15             return parseFloat(s[0]+s[2]+s[4]) <= 442 && parseFloat(s[0]+s[2]+s[4]) > 430 ? true : false}
16     }
17 }

  

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

  出现缘由:IScroll对于数值设置为Number,当存入sessionStorage会转为字符串,若取出来不进行parseFloat处理,将返NaN致使没法定位 
  解决方案:一、对从sessionStorage中取出来的数值,进行parseFloat处理。二、修改IScroll关于scrollTo位置的源码,增长 || 0 操做
字符串

1 var myScroll = new Scroll("#wrapper");
2 window.sessionStorage.setItem("pos",myScroll.y);
3 myScroll.scrollTo(parseFloat(window.sessionStorage.getItem("pos"))); // 也可修改scrollTo方法作 || 0 转换为数值处理
相关文章
相关标签/搜索