每日分享!~ 如何解决获取卷曲高度的问题,document.body.scrollTop为什么在pc端拿不到值

document.scrollingElement.scrollTop

时间挺快的~ 又是四月的最后一天了!好了进入今天的正题了。你在做项目的时候,经常会不会搞混document.documentElement.scrollTop,和document.body.scrollTop呢? 在以前我也是经常搞混,为什么我监听了scroll是正确的?

  • 比如我在pc 端使用了document.body.scrollTop去获取当前的窗口的高度,始终是0,正在着急为什么是0??? 到底哪里错了。找了半天可能都不知道错在哪里了
  • 这个时候我们换上了document.documentElement.scrollTop, 就发现了可以拿到想要的值。

    先放一段代码吧!

       // console.log(window.pageXOffset)
        var log = ''
        window.addEventListener('scroll',function(e){
            // console.log(document.documentElement.scrollTop)
            // ie
            // console.log(document.body.scrollTop)
            //使用documnet.body.scrollTop. 无法监听到浏览器滚动的高度-
            // console.log(window.pageXOffset)
            log += '\ndocument.documentElement.scrollTop:'+ document.documentElement.scrollTop + '\ndoucument.body.scrollTop是:'+ document.body.scrollTop;
            // result.innerHTMl = log

            var result = document.querySelector('#result')
            // console.log(result)
            result.innerHTML = log;
            // result.scrollTop = 9999;

到底为什么会这样呢?

  • 因为在js中,document.documentElement.ScrollTop 是获取pc端的窗口高度
  • 如果使用 document.body.ScrollTop 是获取移动端的窗口高度

如果想又要在pc端可以获取,又想在移动端获取那么可以把这两个代码都写一边就可以了但是呢,这样非常麻烦。

这时候福音来了。 我们可以使用document.scrollingElement.scrollTop来解决这个问题了,推荐以后都要可以使用这个哦!!! 如果使用了这个获取窗口高度在移动端和pc端都可以拿到了

  document.addEventListener('scroll',function(){
            // console.log('ok')
            console.log(document.scrollingElement.scrollTop)
            // 设置scorllTop 的高度
        })

好了今天的分享就先到这里了!@~

原文地址:https://www.cnblogs.com/yaogengzhu/p/10798433.html

时间: 2024-10-21 14:50:09

每日分享!~ 如何解决获取卷曲高度的问题,document.body.scrollTop为什么在pc端拿不到值的相关文章

每日分享

一.判断浏览器类型 /* * 描述:判断浏览器信息 * 编写:LittleQiang_w * 日期:2016.1.5 * 版本:V1.1 */ //判断当前浏览类型 function BrowserType() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 var isIE = use

获取页面高度

有时候,即使高度被设置为100%,也只是页面的100%,如果某个表格突然很长,则其他的层的高度跟不上.从body的100%开始,就跟不上最长的那个div. 没有想到更好的解决方法. 现在的解决方法是: 用jquery获取最长的层的高度.height().再给其他的层设置这个最大高度. 注:jquery的window.height仅仅是可见部分的高度! 获取页面高度,布布扣,bubuko.com

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大家分享一下, 还是一行代码搞定APP引导页, 废话不多说直接进入主题! 如果还没来得及看上一篇博客的话, 请大家点击这里进入: iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①) ????; (一)老规矩先上GitHub连接,给大家节省时间(分享是一种美德,S

js使用offsetHeight获取div高度为0的问题

今晚试了好久没弄出来,后来获取子一层的div就能获取到高度了 我的情况是这样的:我在最外面写一个<div id="mainBody">,  里面写bootstrap的div,获取mainBody的offsetHeight为0,而子div(bootstrap的div)能够显示offsetHeight. 百度了好久,终于找到一个网页:http://bbs.csdn.net/topics/390355106 原来是浮动的问题,那就好办了,直接在#mainBody的里面加上<

Android如何获取系统高度、标题栏和状态栏高度

在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息.为以后方便,在此做个简单记录. 晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 ) 1. 屏幕区域的获取 [java] view plaincopy activity.getWindowManager().getDefaultDisplay(); 2.应用区域的获取 [java] view plaincopy R

javascript 获取页面高度(多种浏览器)(转)

关于获取各种浏览器可见窗口大小的一点点研究 <script> function getInfo() { var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidth; s += " 网页可见区域高:"+ document.body.clientHeight; s += " 网页可见区域宽:"+ document.body.offsetWidth + " (

【转】Andorid获取状态栏高度

在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度.状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height.但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件.下边是在Activity中获取的方法 public int getStatusBarHeight() { int resul

jquery获取窗口高度的方法及判断scroll滚动到底部

$(window).height()     获取的是当前可视窗口的高度,也就是用户能看到的窗口的高度,是不变的(在窗口大小不变的前提下)$(document).height()  获取的是窗口内文档的高度,这个高度随着文档内容的高度改变而改变 当窗口滚动条滚到最低端时,$(document).height() == $(window).height() + $(window).scrollTop().当窗口内文档高度不足浏览器窗口高度时,$(document).height()返回的是$(wi

Android分享笔记(1) 获取屏幕尺寸,包括状态栏

一大波干货来袭,屏幕尺寸各种获得,状态栏尺寸可正确获得,亲测. package com.elyar.app.util.measure; import java.lang.reflect.Field; import android.app.Activity; import android.util.DisplayMetrics; public class DisplayMeasure {  /**   * Note:个人经验不服来辩<br>   * 只有activity可以使用getWindow