JavaScript 中的垂直文档滚动位置,可跨浏览器兼容至 IE 8
vertical document scroll position in JavaScript that is cross-browser compatible up to IE 8
我想要 JavaScript 中文档元素的滚动位置,因为我不能使用 jQuery。
问题:获取文档垂直滚动位置的JavaScript代码是什么?我需要让它兼容 IE 8 和所有现代浏览器。
更新 1:
我查看了作为此副本给出的 2 个答案。第一个确实解决了我的问题,尽管它不关注跨浏览器解决方案,但第二个与我需要的相去甚远。我需要文档的垂直滚动位置而不是滚动到文档的顶部。第二个 post 谈到使用 link 或逐步到文档顶部,这没有解决我的问题。
更新 2:
根据 minitech 提供的答案,我想出了以下函数来确定适用于所有现代浏览器以及 IE 8 的滚动位置。我对此进行了测试,它适用于 Chrome、FireFox、Opera、Edge 、 IE 8、IE 9、IE 10 和 IE 11。
function getScrollY() {
return window.scrollY || window.pageYOffset || document.body.scrollTop;
}
function getScrollX() {
return window.scrollX || window.pageXOffset || document.body.scrollLeft;
}
var scrollPosition = window.pageYOffset;
兼容性说明:
document.body.scrollTop
在 Firefox 中不起作用(始终为 0);如果你想使用 scrollTop
,那就是 document.documentElement.scrollTop
。相反,document.documentElement.scrollTop
在 Chrome 中始终为 0(好吧,Blink 和 WebKit)。
window.scrollY
在 IE 8 及更早版本中不存在。
因此,为了兼容旧版 IE,请使用:
var scrollPosition =
'pageYOffset' in window ?
window.pageYOffset :
document.body.scrollTop;
我想要 JavaScript 中文档元素的滚动位置,因为我不能使用 jQuery。
问题:获取文档垂直滚动位置的JavaScript代码是什么?我需要让它兼容 IE 8 和所有现代浏览器。
更新 1: 我查看了作为此副本给出的 2 个答案。第一个确实解决了我的问题,尽管它不关注跨浏览器解决方案,但第二个与我需要的相去甚远。我需要文档的垂直滚动位置而不是滚动到文档的顶部。第二个 post 谈到使用 link 或逐步到文档顶部,这没有解决我的问题。
更新 2: 根据 minitech 提供的答案,我想出了以下函数来确定适用于所有现代浏览器以及 IE 8 的滚动位置。我对此进行了测试,它适用于 Chrome、FireFox、Opera、Edge 、 IE 8、IE 9、IE 10 和 IE 11。
function getScrollY() {
return window.scrollY || window.pageYOffset || document.body.scrollTop;
}
function getScrollX() {
return window.scrollX || window.pageXOffset || document.body.scrollLeft;
}
var scrollPosition = window.pageYOffset;
兼容性说明:
document.body.scrollTop
在 Firefox 中不起作用(始终为 0);如果你想使用scrollTop
,那就是document.documentElement.scrollTop
。相反,document.documentElement.scrollTop
在 Chrome 中始终为 0(好吧,Blink 和 WebKit)。window.scrollY
在 IE 8 及更早版本中不存在。
因此,为了兼容旧版 IE,请使用:
var scrollPosition =
'pageYOffset' in window ?
window.pageYOffset :
document.body.scrollTop;