JS判斷是否出現滾動條

http://www.cnblogs.com/yazdao/archive/2010/12/06/1897742.htmlhtml

該博文是想用JS檢測瀏覽器是否出滾動條。瀏覽器

 

這邊想到一個比較取巧的方法,.net

假如沒有出滾動條的時候,手工給增長一個滾動值會怎麼樣?htm

程序上就是給body或documentElement的scrollLeft、scrollTop賦值,blog

立刻動手實現了一下,結果跟我意想的差很少,呵呵get

瀏覽器在沒有出滾動條的時候,賦值後該值不會發生變化,始終是0。io

 

 

另外擴展了一下,該檢測方法,不只能夠檢測頁面滾動條,function

傳入要檢測的節點,同樣能夠獲得想要的結果。class

 

如下是個人實現,沒有作太多異常處理:test

(給scrollLeft,scrollTop賦負數值時會報錯,此外scrollLeft,scrollTop的值不能大於實際最大的滾動值)

var isScroll = function (el) {
             // test targets
             var elems = el ? [el] : [document.documentElement, document.body];
             var scrollX = false, scrollY = false;
             for (var i = 0; i < elems.length; i++) {
                 var o = elems[i];
                 // test horizontal
                 var sl = o.scrollLeft;
                 o.scrollLeft += (sl > 0) ? -1 : 1;
                 o.scrollLeft !== sl && (scrollX = scrollX || true);
                 o.scrollLeft = sl;
                 // test vertical
                 var st = o.scrollTop;
                 o.scrollTop += (st > 0) ? -1 : 1;
                 o.scrollTop !== st && (scrollY = scrollY || true);
                 o.scrollTop = st;
             }
             // ret
             return {
                 scrollX: scrollX,
                 scrollY: scrollY
             };
         };出自於:http://my.oschina.net/oncereply/blog/38511
相關文章
相關標籤/搜索