addEventListenter 监听页面滚动事件 鼠标左键拖拉滚轮

这篇具有很好参考价值的文章主要介绍了addEventListenter 监听页面滚动事件 鼠标左键拖拉滚轮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:在同一个界面需要调的接口太多,需要做懒加载
想法:监听滚动位置,到一个范围内调用对应的接口
做法1:
1、首先在整个vue文件的最外层加上 ref="scrollview"和 @mousewheel=“scrollChange”

<template>
  <div
    ref="scrollview"
    @mousewheel="scrollChange"
  >
  <!--主要内容  work-list:这是我写的组件,在组件中加入ref="workChild"-->
    <work-list
      ref="workChild"
    />  
  </div>
  </template>

2、在methods中写下一个滚轮方法,里面具体需要做什么处理(比如到哪个位置调用哪个接口或者做其他处理),在html中的组件中加入ref=“workChild”,

 methods: {
 scrollChange(e) {
      const srollTop = document.documentElement.scrollTop;
      console.log(srollTop);
      if (srollTop > 900 && srollTop < 1500) {
        if (this.workFlag) {
          this.workFlag = false; //在data中定义的,防止重复调用,你也可以用防抖来做
          this.$refs.workChild.getWorkList(); //调用子组件work-list的getWorkList方法
        }
      
      }
      }
 }

3、然后在mounted中调用

  mounted() {
  this.$nextTick(()=>{
          const scrollview = this.$refs['scrollview'];
    scrollview.addEventListener('scroll', this.scrollChange, true);
      })
   },

但是方法1存在一个问题,只能用鼠标滚轮,直接用鼠标左键上下拉滚轮就不会调用这个方法this.scrollChange(),因为@mousewheel只支持鼠标滚动

但是不行啊,有时候鼠标滚轮很烦,我想要直接左键拉动滚动条啊,所以方法2来了

方法2:
1、这时候不需要绑定mousewheel

<template>
  <div
    ref="scrollview"
  >
  <!--主要内容  work-list:这是我写的组件,在组件中加入ref="workChild"-->
    <work-list
      ref="workChild"
    />  
  </div>
  </template>

方法内容一样

 methods: {
 scrollChange(e) {
      const srollTop = document.documentElement.scrollTop;
      console.log(srollTop);
      if (srollTop > 900 && srollTop < 1500) {
        if (this.workFlag) {
          this.workFlag = false; //在data中定义的,防止重复调用,你也可以用防抖来做
          this.$refs.workChild.getWorkList(); //调用子组件work-list的getWorkList方法
        }
      }
      }
 }

3、这个直接使用window.addEventListener监听整个window就行

  mounted() {
  this.$nextTick(()=>{
     window.addEventListener('scroll', this.scrollChange, true);
      })
   },

4、监听完最好记得去除一下,不然到时候有bug我就不清楚了

beforeDestroy() {
    window.removeEventListener('scroll', this.scrollChange, true);
  },

感觉应该还有更好的方法,但是我想不到了,欢迎各位指导!文章来源地址https://www.toymoban.com/news/detail-492581.html

到了这里,关于addEventListenter 监听页面滚动事件 鼠标左键拖拉滚轮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity(六)--绑定鼠标点击事件(左键、右键、中键)

    新建一个脚本buttonEvent:

    2024年02月01日
    浏览(55)
  • Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口

    重写窗口的两个事件函数mousePressEvent和mouseMoveEvent即可: 在mousePressEvent 中,按下鼠标左键时,记录窗口坐标,其中窗口坐标的计算是由鼠标事件获取到鼠标在整个屏幕中的坐标(ev-globalpos()),然后再使用pos()获取到鼠标在窗口内的相对位置,两者之差就是窗口在整个屏幕上

    2024年02月12日
    浏览(60)
  • VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件

    《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家 在实际工作中分发VBA程序,写好的

    2024年04月27日
    浏览(41)
  • PyQt5下界面设计, 无边框加阴影界面, 鼠标左键移动事件

            本人小白, 网罗各个网页与资源学习总结的内容, 设置界面无边框且留有阴影, 且鼠标左键可以拖动界面的方法.         首先我们寻找一个模板进行学习演示, 例如腾讯会议的界面:         本人会仿照这个界面进行演示说明, 包括各种样式(你看到就是赚到)      

    2023年04月09日
    浏览(43)
  • vue监听滚动条事件

    2024年02月11日
    浏览(44)
  • js监听滚动事件

    监听滚动事件可以使用 window 对象的 scroll 事件。具体代码如下: 当页面滚动时, scroll 事件就会被触发,然后就可以在事件处理函数中编写相应的逻辑来实现需要的功能,比如实现吸顶效果、懒加载图片等等。 在事件处理函数中,可以使用 document.documentElement.scrollTop 或 doc

    2024年02月16日
    浏览(44)
  • vue 监听滚动条 页面滚动动画

    以页面底部的“回到顶部”功能为例,滚动动画的实现思路是,当点击按钮时,获取当前滚动条的位置,调用定时器函数,每个时间间隔对滚动条的位置递减,直至减小到0,清除定时器,即可回到页面顶部。 当滚动条没有离开首页的一个屏幕高度时,“回到顶部”按钮应设

    2024年02月06日
    浏览(43)
  • python 监听键盘事件和鼠标事件

    键盘监听: python有一个很强大的键盘监听库,那就是 keyboard 。他的父类库 pynput 可以实现鼠标监听 可以自行下载 pip install keyboard | pip install pynput 代码参考

    2024年02月13日
    浏览(42)
  • vue鼠标悬停事件监听

    开发框架为 vue2.x 需求是这样的:页面在鼠标悬停(不动)n秒之后,页面进行相应的事件。 比如在我的需求下,是鼠标悬停15秒之后,页面上三个数据弹窗轮询展示。 我的思路中 涉及到了三个变量 polling: 是 轮询的时候的一个计时器 timeCount: 是 判断鼠标是否移动的一个控

    2023年04月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包