Kraken 中如何正确监听页面滚动到底部事件? 欧阳照涵 提问于 2026-03-07 16:08:19 阅读 53 框架 我在用 Kraken 开发一个移动端列表页,想实现滚动到底部自动加载更多数据。但按照文档监听 scroll 事件好像没反应,控制台也不报错。 我试过在页面根元素上加监听,也试过用 document.documentElement,都不行。是不是 Kraken 的滚动容器不是默认的 body?下面是我的代码: document.addEventListener('scroll', () => { console.log('scrolling...'); }); 我来解答 赞 10 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 UX-路杨 Lv1 Kraken 里的滚动监听跟普通 Web 开发不太一样,你不能直接用 document.addEventListener('scroll'),因为 Kraken 用的是 Flutter 的滚动机制。 在 Kraken 中正确的方式是用 ScrollView 组件配合 onScroll 回调: import { ScrollView } from 'kraken'; ScrollView( onScroll: (event) { // event 里有 scrollOffset、maxScrollExtent、viewportDimension 这些属性 const { scrollOffset, maxScrollExtent, viewportDimension } = event; // 当滚动位置接近底部时触发 if (scrollOffset >= maxScrollExtent - viewportDimension * 0.5) { console.log('滚动到底部了'); // 这里调用你的加载更多方法 } }, child: YourListWidget(), ); 如果你需要更灵活的控制,可以用一个 ScrollController: import { ScrollView, ScrollController } from 'kraken'; const controller = new ScrollController(); ScrollView( controller: controller, onScroll: (event) { // 同样的逻辑 }, child: YourListWidget(), ); 关键点就是 Kraken 的滚动是 Flutter 那一套,不是原生 DOM 事件。你用的 document.addEventListener 根本不会触发,因为 Kraken 内部根本没发原生 scroll 事件出来。 回复 点赞 2026-03-18 23:26 程序员红梅 Lv1 啊哈,Kraken的滚动监听确实有点不一样。它不是用标准DOM的scroll事件,而是用了自己的实现。你需要在Kraken的根容器上监听,试试这样: const container = document.querySelector('.kraken-root'); container.addEventListener('scroll', (e) => { const { scrollTop, scrollHeight, clientHeight } = e.target; if (scrollHeight - scrollTop <= clientHeight + 50) { console.log('到达底部了,该加载更多了'); // 这里放你的加载逻辑 } }); 几点注意: 1. Kraken默认把.kraken-root作为根容器,所有滚动都在这里面发生 2. 计算是否到底部时加了50px的缓冲,避免频繁触发 3. 用scrollHeight - scrollTop <= clientHeight这个判断更可靠 顺便吐槽下,Kraken这设计真是...就不能老老实实用标准API么。不过既然用了,就按它的规矩来吧。 回复 点赞 1 2026-03-07 17:00 加载更多 相关推荐 2 回答 106 浏览 Kraken 中如何正确监听页面返回事件? 我在用 Kraken 开发一个移动端页面,想在用户点击返回按钮时弹出确认提示,但试了 history.back() 和 popstate 都没生效。官方文档里也没找到相关说明,是不是 Kraken 有... 欧阳莉娟 框架 2026-03-02 17:49:19 2 回答 61 浏览 mpvue中如何正确监听页面滚动事件? 我在用mpvue开发微信小程序时,想监听页面的滚动事件来做懒加载,但发现直接在页面里写onScroll根本没反应。查了文档说要用scroll-view组件包裹内容并绑定@scroll事件,可这样又导致... 轩辕鹏宇 移动 2026-03-17 23:26:23 2 回答 35 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动事件,用了Taro.createSelectorQuery()和onPageScroll都不太对,页面根本没触发。 查了文档说要在页面配置里加"enabl... 子晨~ 移动 2026-03-12 13:15:19 2 回答 38 浏览 Kbone 中如何正确监听页面滚动事件? 我在用 Kbone 开发一个混合应用,想监听页面的滚动位置来做懒加载。但在小程序端绑定 scroll 事件完全没反应,H5 端倒是正常的。我试过在 mounted 里加 window.addEvent... 书生シ艳鑫 移动 2026-03-09 16:58:22 2 回答 69 浏览 Taro中如何正确监听页面滚动事件? 我在Taro开发微信小程序时,想监听页面的滚动事件,但用onScroll好像没生效,文档里也没找到明确说明。试了在页面config里加enablePullDownRefresh也不行。 这是我的代码:... 一利娟 框架 2026-03-07 14:26:20 2 回答 50 浏览 Kbone 中如何正确监听页面滚动事件? 我在用 Kbone 开发微信小程序,想监听页面的滚动位置,但 onScroll 事件好像不生效。 试过在页面根元素加 bindscroll,也试过用 window.addEventListener('... ❤俊贺 框架 2026-02-28 17:55:20 2 回答 102 浏览 Kraken框架中滚动事件监听失效怎么办? 在用Kraken开发移动端列表时,给scroll-view绑定了scroll事件但一直没触发,代码检查了好几遍都没发现问题: // 在mounted钩子中绑定 this.$el.querySelect... 国娟(打工版) 移动 2026-02-07 02:37:26 2 回答 89 浏览 字节小程序中如何正确监听页面滚动事件? 我在字节小程序里想监听页面的滚动,用了 tt.onPageScroll 但好像没触发,页面结构是普通 scroll-view 包裹内容。是不是必须用页面级滚动才行?试过在 Page 配置里加 enab... ❤露露 移动 2026-03-23 06:24:22 2 回答 61 浏览 WePY中如何正确监听页面滚动事件? 我在用 WePY 开发一个页面,想监听页面的滚动位置来做懒加载,但直接在 methods 里写 onScroll 好像没反应。查了文档说要用 wepy.page 的生命周期,但试了 onPageScr... 西门甜雅 移动 2026-03-17 14:37:21 1 回答 46 浏览 Kbone 中如何正确监听页面滚动事件? 我在用 Kbone 开发一个混合应用,想监听页面的滚动位置来做懒加载,但发现直接在 window 上监听 scroll 事件完全没反应。 试过 window.addEventListener('scr... 艳鑫🍀 移动 2026-03-15 20:21:20
在 Kraken 中正确的方式是用 ScrollView 组件配合 onScroll 回调:
如果你需要更灵活的控制,可以用一个 ScrollController:
关键点就是 Kraken 的滚动是 Flutter 那一套,不是原生 DOM 事件。你用的 document.addEventListener 根本不会触发,因为 Kraken 内部根本没发原生 scroll 事件出来。
几点注意:
1. Kraken默认把.kraken-root作为根容器,所有滚动都在这里面发生
2. 计算是否到底部时加了50px的缓冲,避免频繁触发
3. 用scrollHeight - scrollTop <= clientHeight这个判断更可靠
顺便吐槽下,Kraken这设计真是...就不能老老实实用标准API么。不过既然用了,就按它的规矩来吧。