Javascript:don';如果光标经过可滚动的div,则不要停止滚动窗口

Javascript:don';如果光标经过可滚动的div,则不要停止滚动窗口,javascript,onscroll,Javascript,Onscroll,我正在构建一个web应用程序,它有一个由许多小的可滚动div(实际上是编辑器)组成的网格,这个网格有足够的元素,比窗口大。当用户开始在空白区域上滚动时,我希望他们滚动窗口本身;当用户开始在网格元素内滚动时,我希望他们在那里滚动div内容。问题是,如果用户开始在空白区域上滚动,然后滚动鼠标使其滑过网格元素,可滚动div将捕获所有滚动事件,从而中断用户在网格上的流动,并将其“捕获”到网格元素中 我无法手动捕获MouseWheel上的onmousewheel事件,因为很抱歉,无法将鼠标滚轮的水平移动与

我正在构建一个web应用程序,它有一个由许多小的可滚动div(实际上是编辑器)组成的网格,这个网格有足够的元素,比窗口大。当用户开始在空白区域上滚动时,我希望他们滚动窗口本身;当用户开始在网格元素内滚动时,我希望他们在那里滚动div内容。问题是,如果用户开始在空白区域上滚动,然后滚动鼠标使其滑过网格元素,可滚动div将捕获所有滚动事件,从而中断用户在网格上的流动,并将其“捕获”到网格元素中


我无法手动捕获MouseWheel上的
onmousewheel
事件,因为很抱歉,无法将鼠标滚轮的水平移动与垂直移动分开捕获,我希望Mac OS X上的用户能够向所有方向滚动。我考虑过使用JS在第一个
onscroll
事件上添加一个z索引非常高的不可见div,并在
onscroll
事件在一定时间内未触发时将其删除。我还没有将其编码,但我想知道是否有更好的解决方案,或者是否有我没有想到的潜在陷阱。任何帮助或建议都会很好!谢谢

由于浏览器的支持,我认为解决这个问题的方法会非常困难,而实际的解决方法可能是计算卷轴、回溯div以及将卷轴应用到页面

你可以这样做:

$('div').scroll(function(e){
    // figure out how much it has scrolled
    window.scrollBy(0,howmuch);
});

但是我一点也不推荐这种解决方案,我认为更好的选择是将div设置为overflow:hidden;选择一个实心滚动插件,并使用它来定制div上的滚动行为。

这是一个麻烦,但解决方法要复杂得多。它也改变了IMHO从来都不是好事的标准行为。