2010-06-01 45 views
14

div元素沒有onscroll事件處理程序嗎? 我的頁面上的行爲似乎並沒有表明識別事件處理程序div onscrollonscroll for div

<div id='bd' onscroll='alert("Scroll Called");'></div> 

此外,
做的div滾動事件捲起窗口滾動的事件,按照DOM事件冒泡?

回答

2

是的,但元素需要有一個滾動條。你可以給它一個overflow: auto(當內容足夠高的時候給你一個滾動條)或者overflow: scroll。 (這些可以被專門設置爲x & y以及overflow-y: scroll ...)

儘管當div被滾動到底部時它們不起泡,窗口將開始滾動。 (基本上,如果div可以滾動它將攔截滾動事件,但如果它不能,那麼它將進入頁面)

+5

謝謝。但是,我有溢出屬性集。我正在滾動div,但沒有得到任何警報。我可能做錯了什麼? – 2010-06-01 18:52:28

1

我知道它可能不是你正在尋找的,但很多JavaScript框架可以幫助你做到這一點。 div沒有必要有一個滾動條讓你鉤住滾動事件。

例如, Mootools有mousewheel事件。 Demo here。 (它有滾動條,但可以使用Firebug刪除滾動條並嘗試 - 它仍然有效)。

我已經使用這個我自己在site我做了一段時間。如果在將鼠標放在圖像上方的同時進行滾動,則會阻止默認頁面滾動,而是滑動圖像欄。

12

取決於您使用的HTML版本,您可以使用onwheel事件。

onscroll事件只能如果所有下列條件:

  1. 的div有overflow: autooverflow: scrolloverflow-y: scroll
  2. 股利目前有一個明顯的滾動條可以滾動。
  3. 鼠標移動實際上會導致滾動條滾動。

因此,onscroll事件並不真正適用於檢測一般鼠標輪的移動。

請注意,onwheel事件是HTML 5中的新事件。但它受到相當廣泛的支持。

4

我也在這個問題上摸不清頭腦,直到我開始更多地瞭解DOCTYPE指令。 onscroll屬性在HTML規範的最新版本中不受支持。它將在Visual Studio中顯示爲無效的語法。它可能在許多瀏覽器中工作,但它仍然是無效的代碼。

相反,你可以使用Javascript或jQuery開展事件。我使用這種方法來同步兩個單獨的div上的滾動:

$("#gridTableContainer").scroll(function() { 
    HandlingScrollingStuff(); 
}); 
+0

你不應該相信微軟所說的關於規格的一切。他們喜歡自己做,他們喜歡稱他們爲標準。而VS讓你感覺像Word一樣,是「正確的」和「有效的」 - 根據MS_。實際上,只有MS最終依靠DOCTYPE才能做出怪癖;所有其他瀏覽器都只是顯示HTML。 [使用MDN學習HTML,CSS和JS](https://developer.mozilla.org/en/docs/DOM/window.onscroll)!切勿使用w3schools,請閱讀[w3fools.com](http://w3fools.com)上的原因。 MSDN對IE來說可以,但不要依賴它們。 ps:onscroll事件是HTML5規範,沒有jQuery。 – metadings 2013-05-17 06:31:39

+1

嗯,是的。即使Visual Studio將其顯示爲有效,上面提到的「仍然無效」時我就是這麼說的。 – Ripside 2014-04-30 17:08:38

0

JQUERY scroll()可以幫助您。

$("#gridTableContainer").scroll(function() { 
    HandlingScrollingStuff(); 
});