繁体   English   中英

当鼠标移动太快时,鼠标悬停和鼠标移出事件不会触发?

[英]Mouseover and mouseout events won't trigger when mouse moves too fast?

我写了一个现场演示来展示这个问题:

http://cssdeck.com/labs/wcczap11

如果您在蓝色、红色和绿色区域之间快速移动鼠标,您将看到 x 和 z 日志之间没有出现红色“y”日志,这意味着您无法获取红色区域鼠标事件。

这就是我要的:

在此处输入图片说明

但是当鼠标移动太快时:

在此处输入图片说明

我只想知道有没有办法不管我移动鼠标的速度有多快,结果总是与第一张图像相同?

我不完全确定它是否会影响 javascript,但不同的鼠标具有不同的轮询率(以 Hz 为单位),如果您的鼠标为 1000hz,并且您以恒定速度移动 1000px,您应该拾取每个像素。

然而,实际上我们开始时会非常快地移动鼠标,并在接近目标时放慢速度以提高准确性。 这意味着前 700 像素的移动速度将比 700hz 可以轮询的速度快,因此您缺少鼠标在 1hz 中移动超过 1px 的值。

这有点简化版(主要是因为我对它一无所知)但基本上小目标很容易被鼠标事件遗漏。

您可以尝试使目标区域更大,但它仍然无法解决所有问题:)

这里的问题很简单。

事件并没有像这样“丢失”。 它们从一开始就不会真正触发:由于传输速度的原因,浏览器在任何时候都不会将指针视为“结束”。 如果是这种情况,那么它也不能触发“退出”,因为它从一开始就从未被视为“进入”。

它不会丢失。 它来来去去,但你看不到,因为你移动鼠标太快。 在您的示例中,它并没有丢失。

调用执行时间过长的回调可能会导致浏览器跳过轮询,直到下一个轮询滴答(您是否见过[Violation] 'message' handler took 326ms控制台消息?)。 您正在使用 jQuery 来附加事件处理程序(我对 jQuery 了解不多),因此事件处理程序有可能不是被动的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM