jquery-mobile的頁面跳轉和iscroll之間的兼容解決方法


有一項目需要用到滾動效果,最后選擇了iscroll插件,代碼寫好后chrome測試一切正常(直接查看用到滾動效果的頁面以下統稱當前頁面),運行APP應用一步步跳轉到當前頁面的時候,滾動效果和滾動條等死活出不來,然后各種調試,各種刪減JS,各種調整代碼,依然不行,真是惡心的要死。最后經過測試發現,如果當前頁面做為應用的第一個頁面展示出來的時候滾動效果就會OK。而通過JQM的頁面跳轉也就是jQuery.mobile.changePage()到達當前頁面的時候,iscroll效果就不起作用了。由此可以想象到,在當前頁面還未初始化即還未展現的時候,滾動區域DOM應該是由於某種原因並不適用於iscroll的初始化條件(可能是高度和實際高度不匹配等等原因吧,具體不太清楚)。

解決辦法一:
可以在滾動區域內容發生變化之后來初始化iscroll滾動對象,所以我們可以在changePage()到當前頁面之后來創建這個對象

$(".selector").on("pagecreate",function(){  
    function loaded() {
        myScroll = new iScroll('wrapper',{snap:false,checkDOMChange:true,vScrollbar:true});
    }
    setTimeout(loaded, 20);
})

解決方法二:
如果之前已經初始化過iscroll對象,我們可以用iscroll的refresh方法來刷新次對象

$(".selector").on("pagecreate",function(){  
    setTimeout(function(){      
        myScroll.refresh();
    }, 100);
})

 


免責聲明!

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



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