Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用jQuery检测滚动条的存在仍然困难吗?_Javascript_Jquery_Scrollbar - Fatal编程技术网

Javascript 用jQuery检测滚动条的存在仍然困难吗?

Javascript 用jQuery检测滚动条的存在仍然困难吗?,javascript,jquery,scrollbar,Javascript,Jquery,Scrollbar,我知道检测滚动条的存在应该是我们都必须经历的难以捉摸的事情之一。到目前为止,我所读到的是,您无法真正检测滚动条的存在,只能在DOM中使用提示来知道它们是否存在,并且不能在少于30行的代码中完成 到了2010年,这听起来有点不可能。jQuery是否有一个跨浏览器的可靠解决方案来解决这个问题,并且至少在大多数情况下都能正常工作?请帮忙,我在拔头发,一半已经在地板上了 可能没有您希望的那么优雅,但这是对我最近编写的用于计算视口高度的脚本的适当改编 从逻辑上讲,您应该在文档就绪和窗口大小调整上调用此函数

我知道检测滚动条的存在应该是我们都必须经历的难以捉摸的事情之一。到目前为止,我所读到的是,您无法真正检测滚动条的存在,只能在DOM中使用提示来知道它们是否存在,并且不能在少于30行的代码中完成


到了2010年,这听起来有点不可能。jQuery是否有一个跨浏览器的可靠解决方案来解决这个问题,并且至少在大多数情况下都能正常工作?请帮忙,我在拔头发,一半已经在地板上了

可能没有您希望的那么优雅,但这是对我最近编写的用于计算视口高度的脚本的适当改编

从逻辑上讲,您应该在
文档就绪
窗口大小调整
上调用此函数

它还处理Opera(第2行)和IE7(第6行)中遇到的不一致

函数滚动条(){
var viewportHeight=window.innerHeight?window.innerHeight:$(window.height();
if(jQuery.browser.msie){
if(parseInt(jQuery.browser.version)==7){
视口高度-=3;
}
}

if(viewportHeight)这可能是一种幼稚的方法,但是
var scrollbar\u present=$(document.height>$(window.height()有什么问题
?我还没有深入研究jQuery实现来了解这一行实现的是什么普通javascript代码。这可能就是我所需要的吗?如果这是jQuery中的标准方式,那么我肯定会使用它。有人反对这个解决方案吗?@Yaggo,好的,我刚刚测试了
$(document).height>$(window.height()
无论我是否看到滚动条,它都会给我false。所以我猜它可能不起作用。抱歉,有一个拼写错误,更正了版本:
var scrollbar\u present=$(文档)。height()>$(窗口)。height()
。在Safari上对我有效。+1很好,但它没有考虑到
溢出:隐藏
,这可能会阻止滚动条出现。我认为只要
#wrapper
不是带有
溢出:隐藏
的元素,它就可以工作。比如说它被包装在
#外部包装
中,并且有
溢出:嗨dden
;包装器的高度不会保持不变吗?您还可以将最后几行重构为一行,如下所示(viewportHeight我想你甚至可以把
?true:false
从结尾敲下来,但不知何故,我懒得检查我的语法。你确定你的
#wrapper
占据了它的全部内容吗?也许你可以在结尾尝试一个clearfix?你可以只写
return viewportHeight==!=
是boolea吗n运算符。
function scrollbar() {
    var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();

    if (jQuery.browser.msie) {
        if(parseInt(jQuery.browser.version) == 7) {
            viewportHeight -= 3;
        }
    }

    if(viewportHeight <= $('#wrapper').height()) {
        return true;
    } else {
        return false;
    }
}