iPad的Safari浏览器:禁用滚动,反弹效果?

我正在开发一个基于浏览器的应用程序,目前我正在开发和iPad的Safari浏览器的样式。

我正在寻找ipad上的两件事情:如何禁用不需要的页面的垂直滚动? &我怎样才能禁用弹性反弹效果?

对于在iOS Safari中运行的web / html应用程序,您需要类似的东西

document.ontouchmove = function(event){ event.preventDefault(); } 

对于iOS 5,您可能需要考虑以下因素: document.ontouchmove和iOS 5上的滚动

2014年9月更新:更彻底的方法可以在这里find: https : //github.com/luster-io/prevent-overscroll 。 对于这个和大量有用的webappbuild议,请参阅http://www.luster.io/blog/9-29-14-mobile-web-checklist.html

2016年3月更新:最后一个链接不再有效 – 请参阅https://web.archive.org/web/20151103001838/http://www.luster.io/blog/9-29-14-mobile-web-checklist .html代替存档版本。 感谢@falsarella指出这一点。

您也可以将body / html的位置更改为固定的:

 body, html { position: fixed; } 

你可以使用这个jQuery代码片段来做到这一点:

 $(document).bind( 'touchmove', function(e) { e.preventDefault(); } ); 

这将阻止垂直滚动,并在您的网页上发生任何反弹效果。

我知道这是略微不合格的,但我一直在使用Swiffy将Flash转换成交互式HTML5游戏,并遇到同样的滚动问题,但没有find解决scheme。

我遇到的问题是Swiffy舞台占据了整个屏幕,所以一旦它被载入,文档touchmove事件就不会被触发。

如果我试图将相同的事件添加到Swiffy容器中,则只要舞台已经加载就会被replace。

最后,我通过将touchmove事件应用于舞台上的每个DIV来解决它(相当混乱)。 由于这些分区也在不断变化,我需要继续检查它们。

这是我的解决scheme,似乎运作良好。 我希望对任何试图find与我相同的解决scheme的人都有帮助。

 var divInterval = setInterval(updateDivs,50); function updateDivs(){ $("#swiffycontainer > div").bind( 'touchmove', function(e) { e.preventDefault(); } );} 
 overflow: scroll; -webkit-overflow-scrolling: touch; 

在容器上你可以设置元素内的弹跳效果

资料来源: http : //www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/

试试这个JS sollutuion :

 var xStart, yStart = 0; document.addEventListener('touchstart', function(e) { xStart = e.touches[0].screenX; yStart = e.touches[0].screenY; }); document.addEventListener('touchmove', function(e) { var xMovement = Math.abs(e.touches[0].screenX - xStart); var yMovement = Math.abs(e.touches[0].screenY - yStart); if((yMovement * 3) > xMovement) { e.preventDefault(); } }); 

防止默认的Safari滚动和反弹手势,而不会分离您的触摸事件侦听器。

对于那些正在使用MyScript Web App的人来说,他们正在为身体的滚动/拖拽(在iPad和平板电脑上)而不是实际写作:

<body touch-action="none" unresolved>

这为我修好了。

在iPhonetesting。 只需在目标元素容器上使用这个CSS,它就会改变滚动行为,当手指离开屏幕时会停止。

 -webkit-overflow-scrolling: auto 

https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling

没有解决scheme适合我。 这是我如何做到的。

  html,body { position: fixed; overflow: hidden; } .the_element_that_you_want_to_have_scrolling{ -webkit-overflow-scrolling: touch; } 

类似于生气的奇异果,我用高度而不是位置来工作:

 html,body { height: 100%; overflow: hidden; } .the_element_that_you_want_to_have_scrolling{ -webkit-overflow-scrolling: touch; }