字节小程序中如何正确监听页面滚动事件?
我在字节小程序里想监听页面的滚动,用了 tt.onPageScroll 但好像没触发,页面结构是普通 scroll-view 包裹内容。是不是必须用页面级滚动才行?试过在 Page 配置里加 enablePullDownRefresh 也没用。
这是我的页面代码:
<scroll-view scroll-y="true" style="height: 100vh;">
<view>很多内容...</view>
</scroll-view>
然后 JS 里写了:
Page({
onPageScroll(e) {
console.log('滚动了', e.scrollTop)
}
})
但控制台完全没输出,到底该怎么监听才对?
tt.onPageScroll只能监听页面级的滚动事件,而不能监听scroll-view组件内部的滚动。要解决你的问题,有两个方案:
第一种方案是把
scroll-view去掉,直接用页面滚动来实现。在 Page 配置里设置enablePullDownRefresh: true只是跟下拉刷新有关,跟滚动事件无关。你需要这样写:然后页面结构改成:
<view style="height: 100vh;"><view>很多内容...</view>
</view>
第二种方案是如果你必须用
scroll-view的话,那就得监听scroll-view自己的滚动事件bindscroll:页面代码改成:
<scroll-view scroll-y="true" style="height: 100vh;" bindscroll="scrollHandler"><view>很多内容...</view>
</scroll-view>
说实话,我以前也踩过这种坑,API调用有时候真得仔细看文档。希望这能帮你解决问题。
页面代码里: