Kbone 中如何正确监听页面滚动事件? ❤俊贺 提问于 2026-02-28 17:55:20 阅读 47 框架 我在用 Kbone 开发微信小程序,想监听页面的滚动位置,但 onScroll 事件好像不生效。 试过在页面根元素加 bindscroll,也试过用 window.addEventListener('scroll'),都没反应。是不是 Kbone 对滚动事件做了特殊处理? Page({ mounted() { window.addEventListener('scroll', () => { console.log('scrolling...') }) } }) 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 UX普涵 Lv1 Kbone里滚动监听确实有点坑,我昨天刚踩过这个坑。主要问题是小程序和web的滚动机制不一样,直接套用web那套行不通。 先检查一下你的scroll-view组件是不是设置了scroll-y属性,这个必须要有。然后在小程序环境要用catchscroll或bindscroll事件,不能用window.addEventListener。 正确姿势是: Page({ data: { scrollTop: 0 }, onScroll(e) { console.log('滚动位置:', e.detail.scrollTop) this.setData({ scrollTop: e.detail.scrollTop }) } }) 模板里要这样写: scroll-y style="height:100vh" bindscroll="onScroll" > 另外吐槽下,Kbone的文档写得真是一言难尽,这种细节都不写清楚,害得我debug了半天... 回复 点赞 3 2026-03-06 09:08 ლ梦雅 Lv1 Kbone 这块确实有坑,小程序的页面滚动机制和 Web 完全不一样,window.addEventListener('scroll') 在 Kbone 里基本是废的,因为小程序的页面滚动走的是原生通道,不是 DOM 那套。 直接说解决方案,有两种方式: 第一种,用小程序原生的 onPageScroll 钩子,这个最稳: Page({ onPageScroll(e) { console.log('scrollTop:', e.scrollTop) } }) 如果你是在 Vue 组件里写,得用 pageLifetimes 配合 onPageScroll: export default { pageLifetimes: { show() { console.log('页面显示了') } }, onPageScroll(e) { console.log('滚动位置:', e.scrollTop) } } 第二种,如果你需要更精细的控制,干脆放弃页面级滚动,改用 scroll-view 组件,这样 Kbone 里的事件监听就能正常工作了: scroll-y @scroll="onScroll" style="height: 100vh" > scroll-view 里的 bindscroll 或者 @scroll 在 Kbone 里是正常的,因为它是组件级别的滚动,走的是模拟 DOM 的逻辑。 总结一下,页面级滚动用 onPageScroll,组件级滚动用 scroll-view。bindscroll 加在根元素上没用,小程序的 Page 本身不是个 DOM 节点。 回复 点赞 1 2026-02-28 19:04 加载更多 相关推荐 2 回答 33 浏览 Kbone 中如何正确监听页面滚动事件? 我在用 Kbone 开发一个混合应用,想监听页面的滚动位置来做懒加载。但在小程序端绑定 scroll 事件完全没反应,H5 端倒是正常的。我试过在 mounted 里加 window.addEvent... 书生シ艳鑫 移动 2026-03-09 16:58:22 1 回答 43 浏览 Kbone 中如何正确监听页面滚动事件? 我在用 Kbone 开发一个混合应用,想监听页面的滚动位置来做懒加载,但发现直接在 window 上监听 scroll 事件完全没反应。 试过 window.addEventListener('scr... 艳鑫🍀 移动 2026-03-15 20:21:20 2 回答 53 浏览 mpvue中如何正确监听页面滚动事件? 我在用mpvue开发微信小程序时,想监听页面的滚动事件来做懒加载,但发现直接在页面里写onScroll根本没反应。查了文档说要用scroll-view组件包裹内容并绑定@scroll事件,可这样又导致... 轩辕鹏宇 移动 2026-03-17 23:26:23 2 回答 31 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动事件,用了Taro.createSelectorQuery()和onPageScroll都不太对,页面根本没触发。 查了文档说要在页面配置里加"enabl... 子晨~ 移动 2026-03-12 13:15:19 2 回答 54 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动事件,但用onScroll好像没生效,文档里也没找到明确说明。试了在页面config里加enablePullDownRefresh也不行。 这是我的代码:... 一利娟 框架 2026-03-07 14:26:20 2 回答 83 浏览 字节小程序中如何正确监听页面滚动事件? 我在字节小程序里想监听页面的滚动,用了 tt.onPageScroll 但好像没触发,页面结构是普通 scroll-view 包裹内容。是不是必须用页面级滚动才行?试过在 Page 配置里加 enab... ❤露露 移动 2026-03-23 06:24:22 2 回答 58 浏览 WePY中如何正确监听页面滚动事件? 我在用 WePY 开发一个页面,想监听页面的滚动位置来做懒加载,但直接在 methods 里写 onScroll 好像没反应。查了文档说要用 wepy.page 的生命周期,但试了 onPageScr... 西门甜雅 移动 2026-03-17 14:37:21 2 回答 26 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动位置,但用onPageScroll好像没生效,控制台也没报错。 页面结构是普通ScrollView包裹内容,是不是得用别的方法?试过在componentD... 子源~ 移动 2026-03-01 09:55:19 1 回答 63 浏览 uni-app中React组件如何正确监听页面滚动事件? 在用uni-app开发时遇到了滚动监听问题。我在页面里写了一个React组件,想通过uni的onPageScroll方法获取滚动位置,但滚动时数值没有变化,甚至出现重复回调。 尝试过这样写代码: co... 极客子诺 移动 2026-02-18 08:58:42 2 回答 44 浏览 Kraken 中如何正确监听页面滚动到底部事件? 我在用 Kraken 开发一个移动端列表页,想实现滚动到底部自动加载更多数据。但按照文档监听 scroll 事件好像没反应,控制台也不报错。 我试过在页面根元素上加监听,也试过用 document.d... 欧阳照涵 框架 2026-03-07 16:08:19
先检查一下你的scroll-view组件是不是设置了scroll-y属性,这个必须要有。然后在小程序环境要用catchscroll或bindscroll事件,不能用window.addEventListener。
正确姿势是:
模板里要这样写:
另外吐槽下,Kbone的文档写得真是一言难尽,这种细节都不写清楚,害得我debug了半天...
直接说解决方案,有两种方式:
第一种,用小程序原生的 onPageScroll 钩子,这个最稳:
如果你是在 Vue 组件里写,得用 pageLifetimes 配合 onPageScroll:
第二种,如果你需要更精细的控制,干脆放弃页面级滚动,改用 scroll-view 组件,这样 Kbone 里的事件监听就能正常工作了:
scroll-view 里的 bindscroll 或者 @scroll 在 Kbone 里是正常的,因为它是组件级别的滚动,走的是模拟 DOM 的逻辑。
总结一下,页面级滚动用 onPageScroll,组件级滚动用 scroll-view。bindscroll 加在根元素上没用,小程序的 Page 本身不是个 DOM 节点。