javascript - 为什么 scrollTop、pageYOffset 和 height 都不起作用?

标签 javascript height scrollbar offset scrolltop

我正在尝试检测浏览器窗口上是否有垂直滚动条(如果内容超过窗口高度并溢出)。我试过 document.body.scrollTopwindow.pageYOffsetdocument.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/

相关文章:

javascript - IE 中的图像 slider 问题 - Bug?

javascript - angularjs ng-change函数不会在html输入中正常触发

java - 在 BorderLayout 中更改/设置 JTextField 的高度

html - 使用 %? 标记内容高度/宽度?

javascript - 在运行时用 DIV 包装表

java - JFrame 滚动条和 Canvas

javascript - 无法将 svg 文件数组从公共(public)文件夹获取到 React js 中的组件

javascript - 加载完成后显示 HTML 页面

css - 任何人都可以解决这个 CSS 高度怪癖

android - 从 android 支持设计抽屉导航中删除滚动条?