我写了一个现场演示来展示这个问题:
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,但是不同的鼠标具有不同的轮询率(以Hz为单位),如果鼠标为1000hz并且以恒定速度移动1000px,则应该拾取每个像素。
但是实际上,当我们接近目标以提高准确性时,我们会非常快速地移动鼠标以使其开始并放慢速度。表示第一个700ish像素的移动速度将比700hz轮询的速度快,因此您缺少鼠标在1hz中移动超过1px的值。
这有点笨拙(主要是因为我并不了解它的全部内容,但是基本上,命中目标较小的目标很容易被鼠标事件遗漏。
您可以尝试扩大目标区域,但仍然无法解决所有问题:)
这里的问题很简单。
它不会迷路。它来来往往,但您看不到,因为您将鼠标移动得太快了。在您的示例中,它不会丢失。
调用执行时间过长的回调会导致浏览器跳过轮询,直到下一个轮询刻度为止(您是否见过[Violation] 'message' handler took 326ms
控制台消息?)。您正在使用jQuery附加事件处理程序(并且我对jQuery不太了解),因此事件处理程序有可能不是被动的。