javascript - 前端: 移动端onscroll事件在部分浏览器内不能实时触发
ringa_lee
ringa_lee 2017-04-10 17:08:31
[JavaScript讨论组]

开发情景如下:

  • 使用React开发移动端web app

  • 需要监听容器元素的滚动距离来实现 实时 加载对应子元素

  • 可滚动的容器元素非全局body

  • 滚动方式采用原生滚动,由 css 设定 body{-webkit-overflow-scrolling:touch} 实现弹性滚动

  • 事件监听采用过: react的onScroll事件, JQ的scroll方法及原生onscroll事件,均会出现以下问题

出现问题:

  • 在部分浏览器(例如:safari)下,手指触发滚动后抬起,此时元素会处于弹性滚动过程,此时这部分浏览器依旧能 实时 监听到滚动事件并做出响应,另外一部分浏览器(例如:UC及微信内嵌浏览器等),当抬手让元素处于弹性滚动过程时,浏览器并不能实时进行事件响应,而是当滚动完全停止后浏览器才会执行事件回调

希望懂的朋友能帮忙解决下,万分感谢!

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
阿神

这个没有办法,移动端浏览器内核限制了onscroll事件的触发频率。需要用iScroll.js。本质其实就是自己实现滚动。

ringa_lee

手机京东的顶部 搜索条 就可以实时监听scroll 实现滚动变色

伊谢尔伦

监听body 的scroll 事件来代替window.onscroll。

大家讲道理

可能需要换方案了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号