Javascript 如何检测浏览器窗口中是否存在滚动条

Javascript 如何检测浏览器窗口中是否存在滚动条,javascript,jquery,browser,scrollbar,Javascript,Jquery,Browser,Scrollbar,我试图检测浏览器窗口中是否显示了滚动条。 对诸如检测内容是否可以滚动等问题的回答,但考虑到现代操作系统和浏览器,这并不总是意味着实际上一直存在滚动条。 有人知道这是否/如何可能吗?或者: if (document.height > $(window).height()) { alert('VERTICAL SCROLLBARS'); } 编辑:使用jQuery function getScrollBarState() { var result = {vScrollbar: t

我试图检测浏览器窗口中是否显示了滚动条。 对诸如检测内容是否可以滚动等问题的回答,但考虑到现代操作系统和浏览器,这并不总是意味着实际上一直存在滚动条。 有人知道这是否/如何可能吗?

或者:

if (document.height > $(window).height()) {
  alert('VERTICAL SCROLLBARS');
}
编辑:使用jQuery

function getScrollBarState() {
    var result = {vScrollbar: true, hScrollbar: true};
    try {
        var root = document.compatMode=='BackCompat'? document.body : document.documentElement;
        result.vScrollbar = root.scrollHeight > root.clientHeight;
        result.hScrollbar = root.scrollWidth > root.clientWidth;
    } catch(e) {}
    return(result);
}

回复:

您能将内容大小与窗口大小进行比较吗<代码>如果(div height/width>window.height/width?如果您担心OSX滚动条只有在实际滚动时才可见,请不要这样做。它们覆盖在内容上,因此不会占用任何额外空间。^与unity/ubuntu中的重叠滚动条相同。我正在使用滚动导航,希望沿垂直方向创建一个菜单滚动条,它也镜像滚动条的控制柄。根据滚动条是否永久可见,控制柄位置略有不同(因为叠加样式的顶部和底部没有小箭头),我想对此进行补偿。如果这不可能,我只希望覆盖滚动条不会那么明显,但如果有人知道检测这种情况的方法,那肯定会很好……除了
document.height
window.height
实际上都不存在;)没错,但浏览器仍然支持它。可能作为document.body.scrollHeight的替代品?您可能指的是
document.body.clientHeight>window.innerHeight
,但它并不准确。一个好的测试站点是——在控制台中尝试,使控制台越来越高,越来越短,以使滚动条出现/消失(编辑:
document.body.scrollHeight
可能是关键,是的)