iScroll5主要解决的两个问题,弹性效果,以及浏览器不支持fixed。产品设计中,涉及到许多的表单填写,同时,有许多悬浮在屏幕底部的按钮以及输入框。因此引入iScroll5框架。同时对于设备进行判断,只有iphone使用该框架。
2.tap与click
tap事件,一般是由移动端的touchstart,touchmove,touchend组合而成。对于这样做,可以解决,click的300ms延迟。
在iScroll5中,默认click事件是禁止的。官方推荐是响应tap事件来进行处理。但项目中,一部分功能是从其它项目迁过来的,中间不少的代码,以及插件都需要click事件。所以需要根据具体的设备,来判断是否开启click配置,代码如下。
2.双击问题
click配置放开后,问题就出来了,移动端,会出现类似点击一次,响应两次的问题。原因装要是因为,iScroll同时响应了tap和click,而click由于延迟300ms,所以,先触发tap,后触发click。
可以通过修改iScroll的源码来解决,代码段如下:
修改后代码如下:
判断两次响应的时间间隔。
3.在不开启click配置时,节点无法点击
由于click配置未开启,iScroll屏蔽了所有点击。如果想解除某些节点的屏蔽。可以在初始化中配置代码类似于:
4.开启click配置后,select,input,textarea无法响应click
开启click配置后,本以为所有的节点都可以响应click了,结果不然。select,input,textarea还是无法绑定click。解决这个问题,也是从iScroll源码下手,找到如下代码段:
修改后代码如下:
这样就开启了input节点,如果要开启其它的,也是类似的处理。
5.页面节点动态变化
由于iScroll的scroll高度,是初始化时,就计算好了。如果在页面中动态添加节点,则会出现,显示不全的现象。可以在每一次操作完dom后,通过scroll.refresh方法刷新视图,重新计算高度。但可能在实际的页面中,会有许多地方对dom节点进行动态的操作。所以,可以用一个定时器,定时刷新视图,方便许多。