如何在iOS上的Safari中滚动时监控滚动位置?

tka*_*lve 26 javascript safari dom-events ios parallax

我目前$(window).bind('scroll', foo);用来监视$(窗口).scrollTop()并做一些东西来创建一个视差效果.

在所有桌面浏览器中,为用户滚动的每个像素调用foo(),一切都很好,花花公子.在iOS上的Safari中,滚动事件仅在滚动完成后触发.

我添加$(window).scrollTop()了以确保在iOS中滑动期间调用该函数,它让我更进一步.当用户释放手指时,页面继续滚动,但事件停止触发.

有任何想法吗?

zvo*_*ona 4

当我看到你的问题时,我正计划为此做一个填充(如果不存在的话?)。不幸的是我的时间很少。

这个想法是有一个setInterval启动的ontouchstart,它检查document.body.scrollTop自上次以来是否发生了变化,例如。每 20 毫秒。如果是,那么我们手动调度滚动事件。否则我们clearInterval显然不会再发生滚动了。

这将是简短的。如果您有更多时间(比我多),那么请随意尝试这些指南。

编辑:现在,进一步阅读,另一个答案似乎提出了同样的想法。您确定在 iPad 上滚动时间隔会停止吗?

  • 我在 http://www.hakoniemi.net/labs/onscroll.html 上尝试了同样的操作,最终得到了相同的分辨率:iOS 弹性滚动无法跟踪。它没有事件侦听器+超时/间隔在滚动期间不会执行。而且由于iOS5中没有requestAnimationFrame,这似乎无法解决。 (7认同)