阻止应用程序拖动,但允许内部div元素在ios中滚动

我有一个Web应用程序,我使用Phonegap适应iOS5。 除了一个问题之外,一切正常。

我的内部<div> s被设置为如果溢出滚动,并且滚动完美,如果在Chrome中溢出,则不会在iPad上滚动。

– 通过禁用touchmove禁用了应用程序拖动; – 我已经实现(也许不正确?)的-webkit溢出滚动:触摸CSS属性,显然是iOS5新的,如下所示:

溢出:滚动; -webkit溢出滚动:触摸;

似乎没有任何工作。

如果我注释掉禁用应用程序拖动(即touchmove)的javascript(从Phonegap),那么滚动工作,但拖动和滚动整个应用程序。

任何帮助,将不胜感激。

这更像是一种黑客攻击,但是你可以做一些检查,看看你是否触摸div ,并根据这一点,防止像这样滚动:

 document.body.addEventListener('touchmove', function (e){ if(document.elementFromPoint(e.pageX, e.pageY) !== document.getElementById('yourdiv'){ e.preventDefault(); } }, false); 

MDN参考

我能够通过使用下面的代码防止拖动主应用程序/页面:

 var myDiv = document.getElementById('idMyDiv'); myDiv.addEventListener('touchmove', function (e){ e.preventDefault(); }, false);