2011-07-21 38 views
1

我有一個可以滾動的div,我想有條件地停止滾動。Javascript獲取滾動量在IE中

的代碼是一樣的東西:

if(theDiv.scrollTop + theDiv.clientHeight + thisScrollAmount > theDiv.scrollHeight) 
    StopScrolling(); 

我怎樣才能獲得滾動滾動金額是多少? (我知道event.wheelDelta通常+ -120,但它似乎,實際上是滾動當一個卷軸可以比完全不同的量。)

編輯 道歉。看來這個問題還不清楚。如果事件沒有被它的處理程序取消,我一直在尋找多少滾動的div滾動條。我假設它採取了不同的值,但它似乎只取值+ - 120.

也許它應該被刪除。

+0

IE8? IE7? IE6? 。 –

+0

任何/所有這些。最好是8和7. – user420667

回答

0
//Works pretty good 

<style type="text/css"> 
    #divTest{width:150px;height:200px;overflow:auto} 
</style> 

<script> 
    var amountCanScroll = 400 
    function maxScroll(){ 
    if(document.getElementById('divTest').scrollTop > amountCanScroll){ 
     document.getElementById('divTest').scrollTop = amountCanScroll; 
    } 
    } 
</script> 


<body><div id="divTest" onscroll="maxScroll()" > 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
     1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/>1<br/> 
    </div> 
</body> 
+0

爲什麼不演示http://jsfiddle.net –

+0

發佈的代碼足以讓他走。除此之外,我甚至不知道該網站:) –

+0

附加jsfiddle演示到你的答案會給你很多的票。相信我(閱讀:看看我的代表)':)' –

0

收聽onscroll事件並檢查該div的scrollTop屬性與最大允許滾動量(這將是您必須提供的任意數字),如果超過該值,則重新設置該div的scrollTop達到最大值。

+0

請看我的編輯。 – user420667

+0

@user我不明白,所以你想限制滾動到某個位置或試圖限制(或獲得?)滾動*速度*? – pixelfreak

+0

滾動事件代碼似乎在滾動實際發生之前得到執行。我想阻止任何滾動,導致滾動「超越結束」。其原因是滾動超過最後似乎導致窗口滾動。我嘗試了cancelBubble並停止傳播,但他們似乎並沒有阻止這種行爲。 – user420667