【发布时间】:2018-12-09 20:12:57
【问题描述】:
我发现 Chrome 68 (Opera 55) 中并非所有的车轮事件都可以取消。例如。有以下代码:
#block {
width: 10em;
height: 10em;
border: 1px solid black;
overflow: auto;
}
#block div {
margin: 0.5em;
padding: 0.5em;
border: 1px solid blue;
}
<div id="block" onwheel="console.log(event.cancelable)">
<div>*****</div>
<div>*****</div>
<div>*****</div>
<div>*****</div>
<div>*****</div>
<div>*****</div>
</div>
如果您运行它并尝试滚动块,您会看到并非所有事件都可以取消,也就是说,控制台中有 false 值。
但是,对于 Firefox,所有事件都可以取消。
在我看来,当您取消一系列车轮事件中的第一个事件时,所有后续事件也将被取消。但是我怎样才能知道是否有一系列事件或只有一个可取消的事件?
当用户到达块的底部时,我需要更改块的内容。内容更改后,块自动向上滚动到初始位置,我在内容更改后100毫秒内取消所有事件。但是,在 Chrome 的情况下,我在第二个/第三个不可取消的轮子事件发生后更改了内容(因为当用户还没有到达底部时第一个没有被取消),然后我就不能取消其他事件,所以内容改变后块会滚动。
有什么解决办法吗? Chrome 的行为是正确的还是只是一个错误?
【问题讨论】:
标签: javascript mousewheel