移动设备上的滚动事件触发延迟

3
我得到了滚动事件监听器,桌面浏览器(滚动开始时,事件直接触发)和移动端的Chrome浏览器(最新版Chrome+ Android 5.0)都能正常工作,但是在其他移动浏览器(如Firefox,Android浏览器)中不同,只有当滚动行为完全停止(从屏幕上松开手指)后才会触发滚动事件,经过一些谷歌搜索我发现原因:这是因为滚动事件要等到滚动完全停止之后才会触发。
我的问题是是否有一些解决方法,也许是最佳实践,以便它将正常触发(就像桌面一样),而且没有剧烈的性能变化?
*仅限JS解决方案(不适用于jQuery)。
2个回答

1
你可以使用iScroll。它不依赖于jQuery,实现了你想要的功能(在移动平台上连续触发滚动事件),还有其他功能。
你可以参考这个答案来学习如何使用iScroll实现这个功能。

2
你能说一下它是如何工作的吗?我不想只是为了解决这个小问题而导入其他代码文件。一定有另一种更加简洁的方法来实现这个。 - zaknuroy

0

我同意Mohit Bhardwaj的答案,并且我想说一些关于iScroll重要的事情。

iScroll依赖于css3 translate和js事件,例如touchMove、touchStart和touchEnd。您可以想象它处理页面或元素容器中整个滚动系统。 有一件事情你应该知道,如果你想在iScroll中监听滚动事件,你必须导入iscroll-probe.js,并将probeType参数设置为2或3。否则,您将无法获取滚动事件。

iScroll版本5很好,我在很多项目中使用它。您可以在这里查看它的文档和代码。


1
通过“替换浏览器的整个滚动系统”来修复延迟的滚动事件是一个可怕的想法。 - Glenn Maynard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接