iOS Safari - 禁用滚动/反弹但保留缩放

时间:2016-06-03 09:57:12

标签: javascript jquery ios css safari

我正在为iOS Safari创建一个网络应用程序,并遇到了一个小障碍。

我的网络应用程序仅占用1024x768的屏幕空间,因此不需要滚动,但它确实需要能够缩放(它是PDF注释器)。

我使用了一个名为iNoBounce(https://github.com/lazd/iNoBounce/)的插件,它通过在touchmove / touchstart事件上触发evt.preventDefault()来成功删除页面中的滚动。这很棒。

这样做的目的是删除缩放事件以及滚动事件。有没有办法删除滚动/弹性弹跳,但保留缩放iOS Safari?

非常感谢

1 个答案:

答案 0 :(得分:1)

我设法通过聆听触摸事件对象上的一些值来解决此问题,特别是changedTouches.lengthscale

首先,我在文档var zoomLevel = 1

的顶部为zoomLevel设置了一个全局变量

接下来,我将iNoBounce中的evt.preventDefault()替换为:

if(evt.changedTouches.length === 1 && zoomLevel <= 1){
    evt.preventDefault();
}
if(evt.changedTouches.length > 1){
    zoomLevel = evt.scale;
}

这会查看正在使用的手指数量,如果页面比例不是100%,则会相应地采取相应措施。