vue项目中window.addEventListener scroll在移动端无效

在vue项目中有一个页面滚动的加载数据的事件,一开始用window.addEventListener scroll在浏览器上调试时可以监听到事件,但是在移动端上无法监听到scroll事件

window.addEventListener('scroll',()=>{

   console.log("页面滚动事件")

})

既然无法实现监听功能就干脆把监听事件绑定到dom元素上

<template>

     <div id="pageId">

     </div>

</template>

<script>

  mounted(){   

    let page = document.getElementById('pageId');

    page.addEventListener('scroll', this.pageScroll,true)

  },

methods:{

  pageScroll(){

     console.log("scroll")

  }

}

</script>

<style>

   #pageId{

   height:100vh;

   overflow-y:scroll

 }

</style>

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 + TypeScript 项目,滚动条事件可以使用节流来实现。因为滚动条事件会频繁地触发,如果使用防抖的话,可能会导致滚动条事件处理函数的执行被延迟,从而影响用户体验。而使用节流可以让滚动条事件处理函数在一定时间间隔内只执行一次,从而减少不必要的计算。 具体实现可以参考以下代码: ``` <template> <div class="container" ref="container"> ... </div> </template> <script lang="ts"> import { onMounted, onUnmounted } from 'vue'; export default { setup() { const containerRef = ref<HTMLDivElement | null>(null); const handleScroll = throttle(() => { // 处理滚动条事件的逻辑 console.log('scroll'); }, 100); onMounted(() => { window.addEventListener('scroll', handleScroll, true); }); onUnmounted(() => { window.removeEventListener('scroll', handleScroll, true); }); return { containerRef, }; }, }; </script> ``` 其,`throttle` 是一个节流函数,可以通过以下方式进行定义: ``` function throttle<T extends (...args: any[]) => any>(fn: T, delay: number): T { let timer: NodeJS.Timeout | null = null; return function(this: any, ...args: Parameters<T>): ReturnType<T> { if (!timer) { timer = setTimeout(() => { fn.apply(this, args); timer = null; }, delay); } } as T; } ``` 在 `handleScroll` 调用了 `throttle` 函数,将滚动条事件处理函数 `() => { console.log('scroll'); }` 转化为一个节流函数。`delay` 参数表示时间间隔,这里设置为 100 毫秒。在 `onMounted` 钩子函数,使用 `window.addEventListener` 来绑定滚动条事件,同时传入 `true` 参数表示在捕获阶段处理事件。在 `onUnmounted` 钩子函数,使用 `window.removeEventListener` 来解绑滚动条事件。最后,将 `containerRef` 对象返回,可以在模板使用 `ref="container"` 来绑定一个 DOM 元素,从而获取该元素的引用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值