有一項目需要用到滾動效果,最后選擇了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); })