Javascript 并非所有车轮事件都可以在Chrome(Opera)中取消

Javascript 并非所有车轮事件都可以在Chrome(Opera)中取消,javascript,mousewheel,Javascript,Mousewheel,我发现在Chrome 68 Opera 55中并不是所有的活动都可以取消。例如,有以下代码: 挡块{ 宽度:10em; 高度:10公分; 边框:1px纯黑; 溢出:自动; } 街区分区{ 边缘:0.5em; 填充:0.5em; 边框:1px纯蓝色; } ***** ***** ***** ***** ***** ***** 在异步触摸板夹点缩放事件中,某些内容可能是相对的。您可能必须始终调用preventDefault并使用scrollBy来模拟默认行为。我想出了一个相当简单的解决方案。仅当滚

我发现在Chrome 68 Opera 55中并不是所有的活动都可以取消。例如,有以下代码:

挡块{ 宽度:10em; 高度:10公分; 边框:1px纯黑; 溢出:自动; } 街区分区{ 边缘:0.5em; 填充:0.5em; 边框:1px纯蓝色; } ***** ***** ***** ***** ***** *****
在异步触摸板夹点缩放事件中,某些内容可能是相对的。您可能必须始终调用preventDefault并使用scrollBy来模拟默认行为。

我想出了一个相当简单的解决方案。仅当滚动事件可取消时,我才更改块的内容。换句话说,当触发一系列控制盘事件时,我只关注可取消事件,如果触发了系列中第一个可取消事件且已到达块的底部,我将更改块的内容。如果一个事件不可取消,它将被忽略


是的,如果块的底部几乎已经到达,但还没有到达,就会有一种阻塞效应,因为即使用户剧烈地滚动滚轮,当到达底部时,内容也不会改变。然而,在我看来,这不是一个大问题,在这种情况下可能会应用一种优化——可以考虑可取消事件的deltaY属性,如果它足够大,可以将内容滚动到底部,则可以取消事件,以编程方式滚动内容,然后更改内容。

是,可能Chrome的这种行为只是一种优化。当浏览器知道不能取消偶数时,可以进行一些重要的优化。