我正在尝试mouseenter
使用以下功能在 Chrome、Firefox 等上工作:
var addMouseenter = (function () {
var contains = function (parent, elem) {
return parent.contains ? parent.contains(elem) :
!!(parent.compareDocumentPosition(elem) & 16);
},
wrap = function (elem, method) {
return function (e) {
if (elem === e.target && !contains(elem, e.relatedTarget)) {
method.call(elem, e);
}
};
};
return function (elem, listener) {
var listener2 = wrap(elem, listener);
elem.addEventListener('mouseover', listener2, false);
};
}());
一切正常,直到我遇到这种特定情况:
- 元素 A 具有这些自定义
mouseenter
侦听器之一 - 元素 A 包含元素 B
- 元素 B 正好在元素 A 的边缘
- 您在同一边缘输入元素 A
我的期望是该mouseover
事件将在元素 B 上触发并冒泡到元素 A。但是,情况似乎并非如此。我使用 Chrome 13 和 Firefox 3.6 进行了测试,得到了相同的结果。我搞砸了什么吗?