繁体   English   中英

jQuery Mobile - 启用滚动禁用页面拖动

[英]jQuery Mobile - Enable scrolling disable page dragging

我目前正在使用phonegap 1.5和jQuery Mobile开发iOS应用程序。

我了解我们可以使用以下javascript禁用页面拖动:

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

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

但是,如果启用了上述内容滚动,则无法进行内容滚动。

有什么办法可以阻止用户拖动页面但是允许滚动吗?

我尝试过使用iScroll。 为此,我需要手动做一个

scrollbar.refresh(); 

在每页的pageinit事件下。 不幸的是,我确实有很多需要滚动的页面。 =(

是否还有其他方法可以在不使用第三方插件的情况下启用滚动功能?

将其添加到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

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

这更有可能起作用,取决于您希望禁用触摸的内容。

我正在使用jQuery Mobile,以下(在DOM就绪上执行)对我有用:

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

请注意,返回false或调用e.stopPropagation()将导致正文的子级也不响应“touchmove”事件。 也许你在一个阻止事件冒泡的事件处理程序中这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM