Kbone 中如何正确监听页面滚动事件? ❤俊贺 提问于 2026-02-28 17:55:20 阅读 16 框架 我在用 Kbone 开发微信小程序,想监听页面的滚动位置,但 onScroll 事件好像不生效。 试过在页面根元素加 bindscroll,也试过用 window.addEventListener('scroll'),都没反应。是不是 Kbone 对滚动事件做了特殊处理? Page({ mounted() { window.addEventListener('scroll', () => { console.log('scrolling...') }) } }) 我来解答 赞 3 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 ლ梦雅 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 加载更多 相关推荐 1 回答 5 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动位置,但用onPageScroll好像没生效,控制台也没报错。 页面结构是普通ScrollView包裹内容,是不是得用别的方法?试过在componentD... 子源~ 移动 2026-03-01 09:55:19 1 回答 33 浏览 uni-app中React组件如何正确监听页面滚动事件? 在用uni-app开发时遇到了滚动监听问题。我在页面里写了一个React组件,想通过uni的onPageScroll方法获取滚动位置,但滚动时数值没有变化,甚至出现重复回调。 尝试过这样写代码: co... 极客子诺 移动 2026-02-18 08:58:42 1 回答 6 浏览 nvue中如何监听页面滚动到底部事件? 我在用uni-app开发一个nvue页面,想在用户滚动到底部时加载更多数据,但试了@scroll事件好像拿不到正确的滚动位置,文档里也没找到类似onReachBottom的API,这该怎么处理? 目前... 静静的笔记 移动 2026-03-01 23:59:20 2 回答 6 浏览 Hippy 中如何正确监听页面返回事件? 我在 Hippy 项目里想监听页面返回(比如 Android 物理返回键),但文档里没找到明确的 API。试过用 BackHandler,但好像不是 Hippy 的标准模块,一直报错说 undefin... 爱学习的云娴 框架 2026-02-27 19:12:21 1 回答 41 浏览 Kbone项目中使用自定义组件样式丢失怎么办? 我在Kbone项目里写了个带背景色的按钮组件,但渲染到页面后颜色完全没显示。试过用内联样式style="background:red"和组件内CSS都无效。 组件代码是这样的: <kbone-c... Prog.俊蓓 框架 2026-02-05 23:10:39 1 回答 4 浏览 Kraken 中如何正确监听页面返回事件? 我在用 Kraken 开发一个移动端页面,想在用户点击返回按钮时弹出确认提示,但试了 history.back() 和 popstate 都没生效。官方文档里也没找到相关说明,是不是 Kraken 有... 欧阳莉娟 框架 2026-03-02 17:49:19 2 回答 57 浏览 Kbone中使用Skeleton组件时移动端渲染错乱怎么办? 用Kbone开发小程序时,Skeleton组件在H5端显示正常,但微信小程序里文字和图片总是错位,调整过flex布局和padding都不行,求解! 尝试给包裹元素加了display: flex和fle... 皇甫歆艺 框架 2026-02-14 09:58:34 2 回答 1,319 浏览 Kbone组件在小程序和H5端渲染不一致怎么办? 在用Kbone开发多端项目时,发现同一个自定义组件在微信小程序端显示正常,但H5端文字和布局完全错位。我检查了条件编译部分,都按文档写了v-if="env.isWeapp"和v-else,但问题依旧存... 一增芳 框架 2026-02-09 21:29:33 2 回答 29 浏览 移动端滚动卡顿时,怎么用Passive监听优化事件? 在优化移动端页面时,我给触摸事件加了{ passive: true },滚动确实流畅了,但有个问题:touchMove里调用event.preventDefault()阻止滚动时完全没反应了,这是为什... 毓金酱~ 优化 2026-02-08 23:38:27 2 回答 39 浏览 为什么监听页面自定义事件埋点在某些页面没触发? 最近在给项目加监控埋点,监听页面自定义事件page:view时,发现登录页能正常上报,但商品详情页完全没反应。 我用同样的代码监听了window.addEventListener('page:view... 技术亚楠 前端 2026-02-08 18:37:21
直接说解决方案,有两种方式:
第一种,用小程序原生的 onPageScroll 钩子,这个最稳:
如果你是在 Vue 组件里写,得用 pageLifetimes 配合 onPageScroll:
第二种,如果你需要更精细的控制,干脆放弃页面级滚动,改用 scroll-view 组件,这样 Kbone 里的事件监听就能正常工作了:
scroll-view 里的 bindscroll 或者 @scroll 在 Kbone 里是正常的,因为它是组件级别的滚动,走的是模拟 DOM 的逻辑。
总结一下,页面级滚动用 onPageScroll,组件级滚动用 scroll-view。bindscroll 加在根元素上没用,小程序的 Page 本身不是个 DOM 节点。