我正在尝试检测浏览器窗口上是否有垂直滚动条(如果内容超过窗口高度并溢出)。我试过 document.body.scrollTop
、window.pageYOffset
和 document.body.style.height
...无 这些都在工作!
在对使用这些属性初始化的变量进行 window.alert
测试时,pageYOffset
总是返回 0 无论是否有滚动条,另外两个返回似乎是一个空字符串。
我唯一的想法是可能是 CSS 定位冲突导致的,但是似乎没有这样的冲突......有什么想法、解决方案、解决方法吗?
最佳答案
这个
window.innerWidth - document.documentElement.clientWidth
返回浏览器窗口垂直滚动条的宽度,0
如果没有滚动条。
所以,你可以有一个函数...
function windowHasVerticalScrollbar () {
return window.innerWidth - document.documentElement.clientWidth > 0;
}
很遗憾,IE8 和 IE7 不支持 window.innerWidth
值,所以这种技术在那些浏览器中不起作用。 (但是,它确实适用于 IE9 和所有其他浏览器)。
此外,由于 documentElement
是 <html>
元素(网页的根元素),如果您在该元素上设置样式(如边距、绝对定位等),计算可能会返回不正确的结果。
关于javascript - 为什么 scrollTop、pageYOffset 和 height 都不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115166/