JavaScript 获取 scrollTop 的跨浏览器兼容方案

作者:像素漫游

时间:2026-10-27

浏览:340

本文详细解析 JavaScript 中获取页面滚动距离 scrollTop 的跨浏览器兼容性问题。针对 Chrome、IE、Firefox 及 Safari 等不同浏览器在标准文档类型(doctype)与非标准模式下的行为差异,提供了统一的赋值简写方案:var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;,确保在各类环境下都能准确获取滚动条相对于顶部的偏移量。

文章目录

JavaScript 获取 scrollTop 的跨浏览器兼容性问题

javascript scrollTop 获取滚动条相对于其顶部的偏移(如制作自动显示隐藏的“返回顶部”按钮)。在实际应用中经常会遇到以下问题: document.documentElement.scrollTop在Chrome里总为0 document.body.scrollTop 在IE和firefox里总为0 1、各浏览器下 window.pageYOffset/document.documentElement.scrollTop/document.body.scrollTop的差异 示例:

以下是不同浏览器环境下 window.pageYOffset、document.documentElement.scrollTop 和 document.body.scrollTop 的具体行为差异示例。

window.scroll(0,100)
console.log("window.pageYOffset:"+window.pageYOffset)
console.log("document.documentElement.scrollTop:"+document.documentElement.scrollTop)
console.log("document.body.scrollTop:"+document.body.scrollTop)

各浏览器下的行为差异分析

在 IE6/7/8 浏览器中:


当页面包含 doctype 声明时:


window.pageYOffset 的值为 undefined


document.documentElement.scrollTop 的值为 100


document.body.scrollTop 的值为 0

当页面不包含 doctype 声明时: window.pageYOffset 的值为 undefined document.documentElement.scrollTop 的值为 0 document.body.scrollTop 的值为 100 在 Safari 和 Chrome 浏览器中: window.pageYOffset 的值为 100 document.documentElement.scrollTop 的值为 0 document.body.scrollTop 的值为 100

在 Firefox 和 Opera 浏览器中:

当页面包含 doctype 声明时: window.pageYOffset 的值为 100 document.documentElement.scrollTop 的值为 100 document.body.scrollTop 的值为 0

当页面不包含 doctype 声明时: window.pageYOffset 的值为 100 document.documentElement.scrollTop 的值为 0 document.body.scrollTop 的值为 100

通用的 scrollTop 获取方案

为了实现跨浏览器兼容,获取 scrollTop 值的完美且简洁的赋值写法如下:

代码实现如下:

var scrollTop = window.pageYOffset|| document.documentElement.scrollTop || document.body.scrollTop;

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章