zoukankan      html  css  js  c++  java
  • 第一次使用isScroll.js遇到的问题

      一直以来都有一个问题,在做移动app的时候页面中部分内容滑动总是有问题,有时候可以很流畅的滑动,有时候就像僵住了一样,怎么样都滑不动,这种情况在华为手机上出现的最多,有时候正常,大多时候不正常。我刚开始布局就是计算出要滑动的那部分内容在页面中的高度,然后如果里面的内容超过就overflow:scroll。但是问题就是出现在这里,刚开始是真的没有头绪,因为看起来很正常。然后百度到说加一句代码-webkit-overflow-scrolling: touch;就可以解决问题,但是这时候我已经尝试另外的方法了,所以这个我也没有验证是否可靠。

      然后我是用了一个移动端插件isScroll.js,这是专门做移动端滑动事件的,因为从没接触过,所以也是懵,贴上一个简易学习的网址:http://www.360doc.com/content/14/0724/11/16276861_396699901.shtml,容易上手。在这里我简单写一下要注意的问题,第一就是一定要给滑动部分的那个wrapper盒子一个高度,然后就是使用了isScroll以后会自动把输入框那些东西禁掉了,即不能输入,copy上我的代码。我刚开始是这样写的:

      

    $(document).ready(function(){
                var allHeight = parseInt(document.documentElement.clientHeight);
                var headHeight = parseInt($('#header').css("height"));
                //isScroll容器样式设置
                $("#wrapper").css({
                     'position':'initial',
                     'height':allHeight-headHeight-220,
                     'overflow':'hidden'
                });
                var myscroll;
                function loaded(){
                    setTimeout(function(){
                        myscroll=new iScroll("wrapper",{
                            hscrollbar:false,
                            vscrollbar:false,
                            hscroll:false,
                            vscroll:true,
                            momentum:false,
                            snap:true,
                            preventDefault:false,
                            checkDOMChanges:true,
                            mouseWheel:true, //侦听鼠标滚轮事件
                            //重写这个方法,因为isScroll让输入框禁用了
                            onBeforeScrollStart: function (e) { 
                                var target = e.target; 
                                while (target.nodeType != 1) target = target.parentNode; 
                                if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') 
                                    e.preventDefault(); 
                                }
                        });
                    },100 );
                }
                
                window.addEventListener("load",loaded,false);
                myscroll.refresh();
               
                document.addEventListener('touchmove', function (e) {e.preventDefault(); }, false);
            });        

           当然,这时候还是有问题,在手机上测试的时候不分手机类型的都不能滑动,因为不了解isScroll,所以不知道从哪里开始找,后来找测bug的同学给我找,结果他一百度就出来了,我也是比较无语,其实我是百度过的,但是不知道怎么说需求,所以不能精确的找出答案。

      百度告诉我只要把最后一行代码,即document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);这一句注释掉就好了,因为这是对全局的移动事件进行阻止默认事件,如果在外层有这个事件,那你插件里面怎么改可能都没用,所以不管我怎么改isScroll里面的参数都是不行的。

      在这里先记录下来遇到的问题,以后在做项目的时候再继续探讨isScroll,好用是好用,但是坑也多,还得注意。也不知道什么时候才会静下心来读一下源码

      

  • 相关阅读:
    HDOJ -- 4632 区间DP
    leetcode230- Kth Smallest Element in a BST- medium
    leetcode240- Search a 2D Matrix II- medium
    leetcode369- Plus One Linked List- medium
    leetcode276- Paint Fence- easy
    leetcode54- Spiral Matrix- medium
    leetcode264- Ugly Number II- medium
    leetcode263- Ugly Number- easy
    leetcode616- Add Bold Tag in String- medium
    leetcode289- Game of Life- medium
  • 原文地址:https://www.cnblogs.com/yaoya/p/6758059.html
Copyright © 2011-2022 走看看