码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JS-获取网页滑动距离,并实时监听


    介绍

    本文主要介绍通过JS获取网页滑动距离,并实时监听的方法。分析document.body.scrollTop、document.documentElement.scrollTop、window.pageYOffset 三者之间的区别。

    在这里插入图片描述

    一、获取网页滑动距离

    JS方法:
    console.log('网页被卷去的高:', document.body.scrollTop);
    console.log('网页被卷去的高:', document.documentElement.scrollTop);
    
    console.log('网页被卷去的左:', document.body.scrollLeft);
    console.log('网页被卷去的左:', document.documentElement.scrollLeft);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    document.body.scrollTop的值总为零的原因

    页面指定了DTD,即指定了DOCTYPE时,使用document.documentElement.scrollTop。

    页面没有DTD,即没指定DOCTYPE时,使用document.body.scrollTop。

    各浏览器下 scrollTop/scrollLeft的差异
    IE:

    对于没有doctype声明的页面,使用 document.body.scrollTop 或 document.documentElement.scrollTop;

    对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Chrome、Firefox:

    对于没有doctype声明的页面,使用 document.body.scrollTop 来获取 scrollTop高度 ;

    对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Safari:

    safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset

    解决办法

    封装一个兼容所有浏览器的函数

    JS方法:

    //获得页面向左、向上卷动的距离
    getScroll() {
      return {
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
            top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
        };
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、添加实时监听

    JS方法:
    mounted() {
      window.addEventListener('scroll', this.handleScroll);
    },
    
    methods: {
       handleScroll() {
          const scrollTop = this.getScroll().top;
          console.log(scrollTop)
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行结果如下:

    在这里插入图片描述


    三、移除实时监听

    JS方法:
     destroyed() {
        window.removeEventListener('scroll', this.handleScroll);
      },
    
    • 1
    • 2
    • 3

    更多数据信息的获取,详见《JS-获取屏幕/显示器、浏览器、网页、DOM元素的宽高距离位置信息》

    ------------- The End -------------

    许可协议: 转载请保留原文链接及作者。

  • 相关阅读:
    keepalived+haproxy配置集群和负载均衡
    Spring Cloud Kubernetes:在Kubernetes中部署和管理微服务
    2023 年值得关注的软件测试趋势
    《六月集训》(第二十六天)——并查集
    金融信贷行业如何准确——大数据精准定位获客渠道
    深入理解Java虚拟机之【虚拟机栈】
    L2-048 寻宝图(PTA)
    【算法刷题日记之本手篇】统计每个月兔子的总数与字符串通配符
    与BBA争夺市场,阿维塔「智能电动」首战目标怎么定?
    java静态变量理解
  • 原文地址:https://blog.csdn.net/weixin_43937466/article/details/126693101
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号