2012-03-13 61 views
4

我目前正在開發使用PhoneGap的1.5和jQuery Mobile的iOS應用程序禁用頁面。jQuery Mobile的 - 啓用滾動拖動

我明白,我們可以使用下面的JavaScript禁用頁面拖動:

function preventBehavior(e) 
{ 
    e.preventDefault(); 
}; 

document.addEventListener("touchmove", preventBehavior, false); 

然而,內容滾動不工作,如果上述被啓用。

有什麼辦法我阻止用戶拖動頁面還允許滾動?

我一直在使用iScroll嘗試。爲此,我需要手動在每頁上的pageinit事件下執行

scrollbar.refresh(); 

。不幸的是,我確實有很多頁面需要滾動。 =(

是否有,我可以用它來實現滾動,而無需使用第三方插件任何其他方法?

回答

5

一下添加到HTML頭

<script type="text/javascript"> 
    touchMove = function(event) { 
     event.preventDefault(); 
    } 
</script> 

然後在設置

ontouchmove="touchMove(event)" 

最外層的DIV爲要禁用拖動每一個頁面,例如:

<div id="mypage" ontouchmove="touchMove(event)"> 

對於沒有的頁面,可能會進行拖動ontouchmove =「touchMove(event)」

此解決方案要求您不包含函數preventBehavior()的phonegap模板代碼。刪除或註釋掉:

//function preventBehavior(e) 
//{ 
// e.preventDefault(); 
//}; 
//document.addEventListener("touchmove", preventBehavior, false); 

更詳細的信息在這裏:http://phonegap.pbworks.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications

+0

看起來像一個很好的解決方案,但有人真的得到這個工作?對我來說沒有運氣。 – kaleazy 2012-07-26 09:47:16

1

我使用jQuery Mobile和以下(DOM的準備執行)工作對我來說:

$('body').on('touchmove', function(e) { 
    e.preventDefault(); 
}); 

注返回錯誤或調用e.stopPropagation()將導致身體的孩子也不響應'touchmove'事件。也許你正在做的其中停止事件冒泡的事件處理程序之一。

2
$(document).delegate('.ui-page', 'touchmove', false); 

這是更可能的工作,將取決於你想要的觸摸被禁用。