2010-11-02 84 views
0

我有遞歸TimeOut滾動功能,使一個非常寬的窗口水平滾動,直到它到達右端,但我需要在JavaScript中知道如果滾動已完成更改方向並回滾到原點。如何知道窗口是否無法再向右滾動?

我該如何做到這一點?

function ScrollIt(scrollPos, direction) { 
    if(direction == 'right') 
    window.scrollBy(scrollPos,0); 
    else 
    window.scrollBy(scrollPos,0); 
    cTimeOut = setTimeout("ScrollIt(1,'right')",10); 
} 

當然我第一次在onload事件中調用函數。

在此先感謝。

回答

1
var w = document.documentElement.clientWidth; 
var over = document.documentElement.scrollWidth - w; 

window.onscroll = function() { 
    // Detect webkit browser (Chrome, Safari) 
    if(window.devicePixelRatio) { 
    if(document.body.scrollLeft==over) { alert("KABOOM (Webkit)") } 
    } 
    else { 
    if(document.documentElement.scrollLeft == over) { alert("CRUNCH") } 
    } 
} 

測試FF 3.6,IE8,Chrome瀏覽器3.1,Safari瀏覽器4.0

+1

很好的解決。我遇到的唯一問題是當我將頁面放入帶有noscroll的IFRAME中時,它可以在IE和Firefox中使用,但不能在Chrome上使用。無論如何,解決方案非常好! – backslash17 2010-11-02 05:39:05