onscroll for div

The*_*ine 16 html scroll javascript-events

div元素没有onscroll事件处理程序吗?我页面上的行为似乎并不表示onscroll识别div 事件处理程序.

<div id='bd' onscroll='alert("Scroll Called");'></div>
Run Code Online (Sandbox Code Playgroud)

另外,
根据DOM事件冒泡,是否将div滚动事件汇总到窗口滚动事件?

Sil*_*eth 16

根据您使用的HTML版本,您可以使用该onwheel事件.

onscroll只有满足以下所有条件时,该事件才有效:

  1. 该div有overflow: auto,overflow: scroll,overflow-y: scroll,等.
  2. div当前有一个可以滚动的可见滚动条.
  3. 鼠标移动实际上导致滚动条滚动.

因此该onscroll事件不适合检测一般鼠标滚轮运动.

请注意,该onwheel事件是HTML 5中的新功能. 据w3schools称,它得到了广泛的支持.


Rip*_*ide 5

我也在这个问题上摸不着头脑,直到我开始更多地了解 DOCTYPE 指令。最新版本的 HTML 规范不支持 onscroll 属性。它将在 Visual Studio 中显示为无效语法。它可能适用于许多浏览器,但它仍然是无效代码。

相反,您可以使用 Javascript 或 jQuery 来处理事件。我使用这样的方法在两个单独的 div 上同步滚动:

$("#gridTableContainer").scroll(function() {
    HandlingScrollingStuff();
}); 
Run Code Online (Sandbox Code Playgroud)


Cal*_*leb 2

是的,但该元素需要有一个滚动条。您可以给它一个overflow: auto(当内容足够高时给您一个滚动条)或overflow: scroll。(这些也可以专门为 x 和 y 设置overflow-y: scroll......)

尽管一旦 div 滚动到底部它们就不会冒泡,但窗口将开始滚动。(基本上,如果 div 可以滚动,它将拦截滚动事件,但如果不能,它将转到页面)

  • 谢谢。但是,我设置了溢出属性。我正在滚动 div,但没有收到任何警报。我可能做错了什么? (8认同)