由于市面上浏览器的种类众多,但是浏览器没有一个通用的方法来获取该值,想做到每个浏览器都兼容还是要下一些功夫的。

目前主流浏览器除IE外对浏览器标准支持都比较好,例如chrome、firefox以及safari等。对应后者,可以通过window对象的pageYOffset属性来取到当前滚动条到页面顶部的高度。对于万恶的IE来说就比较麻烦一点,它依赖当前文档类型。文档类型分为Standards Mode和Quirks Mode,页面声明了DOCTYPE时为Standards Mode,反之为Quirks Mode。可以使用document.compatMode来获取,该方法也同时支持其他浏览器,其返回值为BackCompat或CSS1Compat,含义如下:

BackCompat Standards-compliant mode is not switched on. (Quirks Mode) CSS1Compat Standards-compliant mode is switched on. (Standards Mode)

由于IE对盒模型的渲染跟文档类型有很大关系,所以获取滚动条高度的方式也是不一样的。当文档类型为Standards Mode,获取方式为:document.documentElement.scrollTop,而Quirks Mode时则为:document.body.scrollTop。

理解上面的所提到的差异后,用代码实现就很容易了,具体实现的代码如下:

function getScrollTop1() {if ('pageYOffset' in window) {return window.pageYOffset;} else if (document.compatMode === "BackCompat") {return document.body.scrollTop;} else {return document.documentElement.scrollTop;}
}

甚至可以修改上述代码,使用一行代码搞定,但是可读性没有上面好,代码如下:

function getScrollTop() {return !('pageYOffset' in window)? (document.compatMode === "BackCompat")? document.body.scrollTop: document.documentElement.scrollTop: window.pageYOffset;
}
或
function getScrollTop() {return ('pageYOffset' in window) ? window.pageYOffset: document.compatMode === "BackCompat"&& document.body.scrollTop|| document.documentElement.scrollTop ;
}

另外除了上述document.compatMode的方式来获取文档类型外,还可以使用 document.defaultView来获取。在IE 9以下的Quirks Mode中document不支持defaultView属性。参考地址:https://developer.mozilla.org/en-US/docs/DOM/document.defaultView。

js如何获取滚动条的高度相关推荐

  1. js获取滚动条的高度

    浏览器获取滚动条高度的方法 浏览器 API IE6/7/8 document.documentElement.scrollTop IE9及以上 window.pageYOffset 或者 docume ...

  2. js获取页面高度获取视口高度获取内容高度获取滚动条宽度高度

    element对象的宽高属性 1. DOM树 2.document对象 3.element对象 4. 获取元素高度宽度 1. DOM树 浏览器根据DOM模型,将结构化文档HTML解析成节点,DOM的最 ...

  3. js,jq获取 滚动条高度 及 浏览器宽高

    ***获取 滚动条高度*** // 获取 滚动条高度 console.log(window.scrollY); console.log(window.pageYOffset); console.log ...

  4. js中获取dom元素高度

    目录 1.dom元素的宽高 2.鼠标事件中的常用高度宽度: 3. 总结: 4.参考博客: 1.dom元素的宽高 javascript中获取dom元素高度和宽度的方法如下: 网页可视区域宽: docum ...

  5. Vue中获取滚动条的高度的方法

    mounted() {//可以在这里面直接进行滚动条的获取 window.addEventListener('scroll', this.handleScroll, true)} methods: { ...

  6. js 获取滚动条的高度

    function getScrollTop() {var scroll_top = 0;if (document.documentElement && document.documen ...

  7. js原生获取html的高度,如何通过js获取Html元素的实际宽度高度

    如何通过js获取Html元素的实际宽度高度 发布时间:2020-04-24 15:23:24 来源:亿速云 阅读:136 作者:小新 今天小编给大家分享的是如何通过js获取Html元素的实际宽度高度, ...

  8. 实时获取滚动条的高度_适用于星上快速处理的雷达高度计有效波高反演技术

    卫星雷达高度计的主要观测参数之一为有效波高,数据产品中其数值的确定通过波形重跟踪来实现(Retracking),波形重跟踪的实现主要通过最大似然迭代完成,其主要的反演公示为W(t) = PFS(t)* ...

  9. js 如何获取浏览器的高度和宽度

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

最新文章

  1. 解析远程服务器响应错误,远程服务器返回一个意外的响应:(400)错误的请求,WCF...
  2. binaryreader java,C# 二进制文件的读写 | 菜鸟教程
  3. mysql cte 表不存在_使用CTE解决复杂查询的问题_MySQL
  4. Java中System.setProperty()用法
  5. SAP Spartacus Route Alias
  6. 推荐一个Chrome扩展应用,能够自动去除CSDN广告
  7. 四叶草引导windows和linux,Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像...
  8. 【原创】请不要对Boost Format使用Byte作为参数
  9. JavaScript 'Pig latin is cool'=='igPay atinlay siay oolcay'
  10. 用生动的案例一步步带你学会python多线程模块
  11. python为源文件指定系统默认_Python 设置系统默认编码
  12. S3C2440时钟电源管理
  13. (转)知乎-区块链技术:如何赋能供应链创新
  14. Python实现音乐推荐系统【跟着迪哥学python】
  15. 金蝶K3批量出库语句与执行方法
  16. fluent瞬态_瞬态环境
  17. linux 怎么关闭输入法快捷键设置方法,关闭输入法快捷键
  18. 【显示器知识 帮新手扫盲+自我总结】
  19. 淘宝API 拍立淘图片搜索接口
  20. c语言格式字符二进制,C语言printf如何输出二进制数格式?将十进制数转为二进制输出...

热门文章

  1. VR全景城市,用720全景树立城市形象,打造3D可视化智慧城市
  2. 罐子与硬币--【英雄会】
  3. html用手机什么软件能编写,目前编写一款简单的手机应用APP一般用什么编程语言?...
  4. 计算机管理的服务打不开,win7系统管理服务打不开的解决方法
  5. 百度富文本编辑器  ueditor 的基本使用
  6. 学术论文中常见的英文简写
  7. 副业怎么样通过手游达到月入过万
  8. VB读取武林外传内存地址
  9. Spark开发实例(编程实践)
  10. 谈谈数据挖掘和机器学习