2010-11-02 83 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