当鼠标移动得太快时,不会触发mouseover和mouseout事件吗?

问题描述 投票:-1回答:4

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

http://cssdeck.com/labs/wcczap11

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

这就是我想要的:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS83bG5BQy5qcGcifQ==” alt =“在此处输入图像描述”>

但是当鼠标移动太快时:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9DVW5DbC5qcGcifQ==” alt =“在此处输入图像描述”>

我只想知道有一种方法,无论我以多快的速度移动鼠标,结果总是与第一张图片相同?

javascript jquery dom dom-events
4个回答
2
投票

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

但是实际上,当我们接近目标以提高准确性时,我们会非常快速地移动鼠标以使其开始并放慢速度。表示第一个700ish像素的移动速度将比700hz轮询的速度快,因此您缺少鼠标在1hz中移动超过1px的值。

这有点笨拙(主要是因为我并不了解它的全部内容,但是基本上,命中目标较小的目标很容易被鼠标事件遗漏。

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


1
投票

这里的问题很简单。


0
投票

它不会迷路。它来来往往,但您看不到,因为您将鼠标移动得太快了。在您的示例中,它不会丢失。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.