iscroll踩过的坑

在iscroll在使用之前必须要实例化,


document.getElementById("wrapper").addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(self.loaded,300); }, false);


loaded:function(){
    var self = this;
    var maxHei;
    myScroll = new iScroll('wrapper', {
        mouseWheel: true,
        tap: true ,
        onScrollMove:function(){
            maxHei = this.y;
        },
        onScrollEnd:function(){
            if(!self.loadingShow && !self.lately){
                self.page++;
                $("#wrapper").css("top","2.13rem");
                self.getStoreAndStaff(mchId,self.provinceId,self.cityId,self.areaId);
            }
        },
        checkDOMChanges:true
    });
},


注意事项

1.只有wrapper里的第一个子元素才可以滚动,如果想要更多元素可以滚动,可以将需要滚动的元素放到第一个子元素下面

<div id="wrapper">

        <div id="scroller">

               <ul>

                    <li></li>

                     ...

                </ul>

                <ul>

                         <li></li>

                          ...

                </ul>

       </div>

</div>

2.使用vue时,获取了数据,但是数据还没有在页面上展现出来,DOM还没改变时,调用iscroll.refresh()无效,需要使用setTimeOut设置延迟。

3.iscroll 变态的将iscroll DOM click事件全部禁止了,解决方法修改iscroll.js 

onBeforeScrollStart方法和_end方法

/*onBeforeScrollStart: function (e) { e.preventDefault(); },*/
onBeforeScrollStart:function (e) {
   var target = e.target;
   while (target.nodeType != 1) target = target.parentNode;
   if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'IMG' )
      e.preventDefault();
},


_end方法


that.doubleTapTimer = setTimeout(function () {
   that.doubleTapTimer = null;

   // Find the last touched element
   target = point.target;
   while (target.nodeType != 1) target = target.parentNode;

   if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'IMG' ) {
      ev = document.createEvent('MouseEvents');
      ev.initMouseEvent('click', true, true,
         e.view, 1,point.screenX,
         point.screenY, point.clientX,
         point.clientY,e.ctrlKey,
         e.altKey, e.shiftKey,
         e.metaKey,0, null);
      ev._fake = true;
      target.dispatchEvent(ev);
      /*ev = doc.createEvent('MouseEvents');
      ev.initMouseEvent('click', true, true, e.view, 1,
         point.screenX, point.screenY, point.clientX, point.clientY,
         e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
         0, null);
      ev._fake = true;
      target.dispatchEvent(ev);*/
   }
}, that.options.zoom ? 250 : 0);

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值