面试题答案
一键面试获取页面垂直和水平滚动位置的代码
在现代浏览器中,可以使用 window.pageXOffset
和 window.pageYOffset
来获取页面的水平和垂直滚动位置。代码示例如下:
// 获取水平滚动位置
const horizontalScroll = window.pageXOffset;
// 获取垂直滚动位置
const verticalScroll = window.pageYOffset;
console.log(`水平滚动位置: ${horizontalScroll}`);
console.log(`垂直滚动位置: ${verticalScroll}`);
兼容性问题及解决方案
- IE8 及以下浏览器:IE8 及以下不支持
window.pageXOffset
和window.pageYOffset
。在这些浏览器中,可以通过document.documentElement.scrollLeft
(水平)和document.documentElement.scrollTop
(垂直)获取滚动位置,但需要注意当DOCTYPE
缺失时,要使用document.body.scrollLeft
和document.body.scrollTop
。 解决方案代码如下:
function getScrollPosition() {
let x = 0, y = 0;
if (typeof window.pageXOffset === 'number') {
x = window.pageXOffset;
y = window.pageYOffset;
} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
x = document.documentElement.scrollLeft;
y = document.documentElement.scrollTop;
} else if (document.body) {
x = document.body.scrollLeft;
y = document.body.scrollTop;
}
return {x, y};
}
const {x: horizontal, y: vertical} = getScrollPosition();
console.log(`水平滚动位置: ${horizontal}`);
console.log(`垂直滚动位置: ${vertical}`);
这段代码通过检测不同的属性来兼容各种浏览器环境,确保在不同浏览器中都能准确获取页面的滚动位置。