【发布时间】:2013-05-24 18:13:14
【问题描述】:
我注意到mouseenter 事件在鼠标未被触摸但光标下方的页面滚动时触发。
看看这个小提琴:http://jsfiddle.net/F3EwW/
重现步骤:
- 点击
li - 使用向上/向下箭头键滚动项目
- 当下方的
li滚动到视图时,您会注意到mouseenter事件被触发。
注意:要注意此行为,请确保鼠标光标位于 li 上方并保持不动。
最初,我接受这是默认行为,并继续在我的代码中解决这个问题。但后来我很好奇,想在任何我无法在任何地方找到的文档中验证这种行为。
有谁知道这种行为是否记录在规范或任何真实网页的任何地方?
我查找了 w3spec event scroll 和 mouse event order,但找不到任何相关信息。
另外mouseenter的规格说明如下,
当指针设备移动到元素或其后代元素之一的边界时,用户代理必须调度此事件。此事件类型类似于 mouseover,但不同之处在于它不会冒泡,并且当指针设备从一个元素移动到其后代元素之一的边界时不得调度。
在 Chrome 中,您会注意到 mouseover 也会被触发。我已经在此发布了 question 和 bug report。
【问题讨论】:
-
我无法复制你在那个小提琴中提到的 Chrome 或 Firefox 中的行为......
-
@DavidBarker 您是否点击了
UL并使用箭头键滚动? -
是的,我做到了,我可以得到任何接近你提到的行为的唯一方法是如果我将鼠标悬停在 UL 上然后滚动......但我会期待这种行为跨度>
-
我也希望这种行为
-
@Vega 我明白你的意思,必须承认我最初对你的问题有点困惑......我也无法在任何地方找到它的记录。也就是说,如果您将事件处理程序应用于元素而不是光标本身,它将监听其约束内的任何鼠标移动。无论鼠标移动与否,它都清楚地检测到它,我会说这是一个有意义的意外“功能”。
标签: javascript jquery browser dom-events