【问题标题】:iOS Safari - disable scroll / bounce but retain zoomiOS Safari - 禁用滚动/反弹但保留缩放
【发布时间】:2016-10-03 08:07:18
【问题描述】:
我正在为 iOS Safari 创建一个网络应用程序,但遇到了一个小障碍。
我的网络应用程序只占用 1024x768 的屏幕空间,因此不需要滚动,但它确实需要能够缩放(它是一个 PDF 注释器)。
我使用了一个名为 iNoBounce (https://github.com/lazd/iNoBounce/) 的插件,它通过在 touchmove/touchstart 事件上触发 evt.preventDefault() 成功地从页面中移除滚动。这很棒。
不过,它的作用是删除缩放事件和滚动事件。有没有办法移除滚动/弹性弹跳但在 iOS safari 上保留缩放?
非常感谢
【问题讨论】:
标签:
javascript
jquery
ios
css
safari
【解决方案1】:
我设法通过监听触摸事件对象上的一些值来解决这个问题,特别是changedTouches.length 和scale。
首先我在文档顶部为 zoomLevel 设置了一个全局变量var zoomLevel = 1
接下来,我将 iNoBounce 中的 evt.preventDefault() 替换为:
if(evt.changedTouches.length === 1 && zoomLevel <= 1){
evt.preventDefault();
}
if(evt.changedTouches.length > 1){
zoomLevel = evt.scale;
}
这会查看正在使用的手指数量,如果页面比例不是 100%,则采取相应措施。