Javascript e、 preventDefault()导致webkit mobile溢出失败

Javascript e、 preventDefault()导致webkit mobile溢出失败,javascript,jquery,html,css,mobile-webkit,Javascript,Jquery,Html,Css,Mobile Webkit,我正试图解决一个整个周末都困扰着我的问题 在中的mobile webkit Safari iOS 5.1上,在我的情况下,当我在体内放置任何禁用默认行为的东西时,我无法保持-webkit overflow滚动:touch行为工作 $('body').on({ touchmove : function(e){ //e.preventDefault(); // I played with these as well //e.stopPropagation();

我正试图解决一个整个周末都困扰着我的问题

在中的mobile webkit Safari iOS 5.1上,在我的情况下,当我在体内放置任何禁用默认行为的东西时,我无法保持-webkit overflow滚动:touch行为工作

$('body').on({
    touchmove : function(e){
        //e.preventDefault(); // I played with these as well
        //e.stopPropagation();
        return false;
    }
});
上面返回false的原因是:我不希望在您滑动身体时身体移动,这是默认的mobile safari行为

$('body').on({
    touchmove : function(e){
        //e.preventDefault(); // I played with these as well
        //e.stopPropagation();
        return false;
    }
});

小提琴1 -触摸溢出工作在中间框与所有文本,但身体移动,我不希望:

Fiddle 2-主体现在通过在其mousemove事件上返回false得到修复,但溢出不再起作用,您无法滚动文本框:

二维码为了方便您,它是移动的,毕竟,使用您的扫描仪

仅Fiddle 1视图面板


仅Fiddle 2视图面板

您需要稍微改变一下。您的代码正在做它应该做的事情。由于主体封装了应用-webkit overflow scrolling:touch的任何项目,该可滚动div或任何无法滚动的项目,因为它在主体中。也许您可以通过创建一个虚拟元素来获得类似的效果,该虚拟元素仅跨越整个设备的宽度和高度,以捕获您想要滚动的div之外的任何touchmove事件


对不起,因为这个问题已经很老了。但我来这里是为了寻找一个我刚刚找到的解决方案。也许这对某人有帮助

我也有同样的问题,需要保持默认的不移动身体的行为,但想要一个漂亮的webkit溢出滚动:触摸;为了一个div

因此,aply event.prevent默认为:

<script>document.ontouchstart = function(e){ e.preventDefault(); } </script>
然后在要滚动的div中:

<div class="nicescrolldiv" ontouchstart="document.ontouchstart = function(e){ return true; }" ontouchend="document.ontouchstart = function(e){ e.preventDefault(); }" style=" overflow: scroll !important; -webkit-overflow-scrolling: touch !important;"></div>

我是个笨蛋,我的网址错了。它不是/view/,它是/show/-现在已经修好了。你应该删除这篇文章,因为很怀疑内部化的问题对任何人都有帮助。@bwheeler96,你在说什么?这是一个真正的问题,适用于任何有兴趣为iOS开发网络剪辑应用程序的人。如果你想保持本机应用的感觉,你必须删除safari默认的身体滑动行为。我想从他的角度来看,他试图说,因为这是URL的问题,有类似问题但正确使用URL的人不会发现这有帮助。这就是我指出的,但我总是有机会错过一些东西。