第一次使用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,好用是好用,但是坑也多,還得注意。也不知道什么時候才會靜下心來讀一下源碼

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM