为什么scrollTop,pageYOffset和height都不起作用?

时间:2012-04-11 22:59:59

标签: javascript height scrollbar offset scrolltop

我试图检测浏览器窗口上是否有垂直滚动条(如果内容超出窗口高度并溢出)。我尝试了document.body.scrollTopwindow.pageYOffsetdocument.body.style.height ... 这些正在发挥作用!

做了{{ 1}}测试用这些属性初始化的变量,window.alert总是返回 0 ,无论是否有滚动条,其他两个返回似乎是空字符串。< br />我唯一的想法是,CSS定位冲突可能导致这种情况,但似乎没有这样的冲突......任何想法,解决方案,解决方法?

1 个答案:

答案 0 :(得分:2)

这个

window.innerWidth - document.documentElement.clientWidth

返回浏览器窗口的垂直滚动条的宽度,如果没有滚动条则返回0

所以,你可以有一个功能......

function windowHasVerticalScrollbar () {
    return window.innerWidth - document.documentElement.clientWidth > 0;
}

不幸的是,IE8和IE7不支持window.innerWidth值,因此这种技术在这些浏览器中不起作用。 (但是,它在IE9和所有其他浏览器中都有效。)

此外,由于documentElement<html>元素(网页的根元素),如果您在该元素上设置样式(如边距,绝对定位等),计算可能会返回不正确的结果。