2014-02-05 56 views
0

我想找到一种方式告诉我,如果一个页面有一个垂直和水平滚动条,但没有办法工作。
我不能使用jQuery。
这是我做了什么:有没有垂直或水平的滚动条?

function hasVerticalScroll() { 
    return document.body.getBoundingClientRect().height >= window.innerHeight; 
} 

function hasHorizontalScroll() { 
    return document.body.getBoundingClientRect().width >= window.innerWidth; 
} 

我测试了空白页上的代码没有滚动条,并与滚动页面,我得到不正确的结果(我得到的,有一个页面上的滚动条不使用滚动条例如)。

有什么想法?

+0

看看这里,也许? http://stackoverflow.com/questions/4814398/how-can-i-check-if-a-scrollbar-is-visible –

+0

OP有没有说他们不能使用jQuery。 –

回答

0

在这里你可以看到我试着查询几个属性:

随着#shell设置为大于视区大小: http://jsfiddle.net/mori57/8t8Dy/5/

#shell设置为视口大小以下: http://jsfiddle.net/mori57/8t8Dy/6/

我想我找到了一个可以使用的密钥,至少对于滚动测试...如您所见,在#shell设置为视口大小(window.innerWidth)宽度的情况下,body scrollWidth大于getBoundingClientWidth()。width所报告的宽度。

(对不起,Pragnesh,你的功能不会出现在我的例子,它包括在我的jsfiddle我的测试页面正常工作了。)

为此,下面的函数在大多数情况下工作:

function HasHorizontalScroll(){ 
    return document.body.scrollWidth > window.innerWidth; 
} 

案例与含量小于视口大小: http://jsfiddle.net/mori57/8t8Dy/11/

案件比视窗尺寸更大的内容: http://jsfiddle.net/mori57/8t8Dy/12/

0

我想下面的功能将帮助您

function VerticalScrollExist() { 
     if (window.innerHeight) { 
      return document.body.offsetHeight > innerHeight; 
     } 
     else { 
      return document.documentElement.scrollHeight > document.documentElement.offsetHeight || document.body.scrollHeight > document.body.offsetHeight; 
     } 
    } 

    function HorizontalScrollExist() { 
     if (window.innerWidth) { 
      return document.body.offsetWidth > innerWidth; 
     } 
     else { 
      return document.documentElement.scrollWidth > document.documentElement.offsetWidth || document.body.scrollWidth > document.body.offsetWidth; 
     } 
    }