滚动时不会触发mouseover / mouseenter

时间:2011-09-06 20:16:10

标签: javascript jquery

我有一款花哨的Apple鼠标可以检测手指动作,例如“轻扫”和“滚动”。

将光标固定在屏幕上,但是用我的手指向下滚动页面,光标(虽然是固定的)自然地移动到不同的元素上,因为元素正在移动。

我的问题是,当这样做时,当鼠标光标直接在它们上方时,不会调用适当的mouseover / mouseenter回调。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

我使用过的大多数浏览器都不会在页面滚动时触发鼠标事件。您可以尝试收听onscroll事件并使用document.elementFromPoint确定onscroll事件触发时鼠标光标下方移动的元素。

答案 1 :(得分:1)

Jquery的mousemove方法在这里是一个很好的解决方案,因为当你滚动鼠标滚动到一个元素时它会被触发,即使鼠标保持静态也是如此。

只要您包含某种标记/状态检查,您甚至可以在mousemove上trigger mouseenter事件,以确保您的mouseenter代码不会在mousemove上重复执行。

答案 2 :(得分:0)

我不认为你可以......没有一个在计时器上运行的功能来检查鼠标对元素的位置,但是这样做的性能至少可以说是天文数字。可能应该向浏览器制造商提交错误报告并检查其他浏览器以查看行为是否被复制 - 我猜它会因为不认为任何浏览器会在鼠标未被物理移动的情况下触发mouseover / mouseenter事件。 / p>