zoukankan      html  css  js  c++  java
  • addEventListener 的使用

    例如监听页面滚动条的位置

    1、html 中定义(获取div高度)

    <div class="content" >
      <div class="approval-list" ref="scrollBox"> </div>
    </div>

    2、mounted() 方法

    【注 1】监听div滚动条的高度:创建一个监听就要记得销毁,否则多次加载导致页面奔溃

      mounted () {
        this.$nextTick(() => {
          this.$refs.scrollBox.addEventListener('scroll', this.handleScroll)
        })
      },

    【注 2】由于 mounted() 阶段 dom 节点才被渲染,因此如果初始化高度、获取高度等操作应该写在 mounted() 方法中

     let h1 = this.$refs.scrollBox.offsetHeight  // 500 (没有单位)
     let h2 = this.$refs.scrollBox.style.height  // 500px (以‘px’为单位)

    3、methods() 方法

      methods: {
        // 获取滚动条高度
        handleScroll() {
          localStorage.setItem('scrollBox', this.$refs.scrollBox.scrollTop)
        },
        // 还原滚动条高度
        getBeforeScroll() {
          let _this = this
          _this.$nextTick(function () {
            var scrollTop = Number(localStorage.getItem("scrollBox"))
            if (scrollTop) {
              this.$refs.scrollBox.scrollTop = scrollTop
            }
          });
        },
      },

    4、addEventListener事件 注册了就一定要记得销毁,在 beforeDestroy() 中销毁事件。

     beforeDestroy () {
        this.$refs.scrollBox.removeEventListener('scroll', 
        this.handleScroll)
      }

    这是对document的监听事件是一个全局的操作,如果没有手动的去取消这个监听那么它的监听机制也就一直存在着,这样每次进入这个页面也就意味着都会增加一次对它的监听。多次之后自然页面也就会卡死了。

    5、【注】如果addEventListener()事件 监听方法不执行

    检查几个问题:

    1. 监听滚动的元素结点是否给了height和overflow:scroll

    2. 监听滚动的元素结点的父元素结点是否设置了高度

    例如css代码如下:

    <style scoped>
    .content {
      height: 100%;
    }
    .approval-list {
      overflow-y: auto;
    }
    </style>

  • 相关阅读:
    发邮件遇到 Failure sending mail.The remote name could not be resolved: 'www.youdomain.com' 问题的解决方法
    machine.config, inetinfo.exe, aspnet_wp.exe, aspnet_state.exe这些文件的作用于位置.
    IIS的变迁(IIS3, IIS4, IIS5, IIS6, IIS7)
    精简代码 (转)
    新年第一帖——元旦这天骑车迷路了
    我是月亮,也想做那天上的太阳
    记几点吧
    谈谈电影
    闺蜜
    大气
  • 原文地址:https://www.cnblogs.com/miny-simp/p/11583509.html
Copyright © 2011-2022 走看看