前言
最近发现在chrome浏览器中点击一个元素的时候,有几率会触发该DOM元素的mouseLeave事件,原因暂时还不知道
解决办法
发现问题后在网上看看有没有人遇到过相同的情况,发现不少人都遇到了这个问题,大部分的解决办法是这个
handleMouseLeave = function (e){
if (!e.relatedTarget || !e.toElement) {
// BUG in Chrome
return;
}
// Correct behavior...
}
但是实际使用下来并不能解决问题,错误的mouseLeave事件的relatedTarget 仍然是存在的,至于toElement,根本没有在event中看到。后来又找到另一种解决办法
handleMouseleave = function (e) {
if (e.screenX === 0 && e.screenY === 0) {
// BUG in Chrome
return;
}
// Correct behavior...
}
实际使用下来是有效的,错误的mouseLeave发生的时候其screenX和screenY的确都是0,但是如果这个事件本来就应该发生在(0, 0)那么就不能触发了哈哈