我试图检测浏览器窗口上是否有垂直滚动条(如果内容超过窗口高度并溢出)。我已经尝试过document.body.scrollTop
,window.pageYOffset
和document.body.style.height
... 这些都不起作用!
在window.alert
对使用这些属性初始化的变量进行测试时,无论是否有滚动条,pageYOffset
总是返回0 ,而另外两个返回似乎是一个空字符串。
我唯一的想法是可能是 CSS 定位冲突导致了这种情况,但似乎没有这样的冲突......任何想法,解决方案,解决方法?
问问题
3929 次
1 回答
2
这个
window.innerWidth - document.documentElement.clientWidth
返回浏览器窗口垂直滚动条的宽度,0
如果没有滚动条。
所以,你可以有一个功能......
function windowHasVerticalScrollbar () {
return window.innerWidth - document.documentElement.clientWidth > 0;
}
不幸的是,IE8 和 IE7 不支持该window.innerWidth
值,因此该技术在这些浏览器中不起作用。(但是,它确实适用于 IE9 和所有其他浏览器)。
此外,由于documentElement
是<html>
元素(网页的根元素),如果您在该元素上设置样式(如边距、绝对定位等),计算可能会返回错误的结果。
于 2012-04-11T23:07:49.137 回答