在IE8中检测mouseout事件

时间:2014-10-14 09:40:01

标签: javascript jquery internet-explorer-8 mouseleave mouseout

我在检测用户何时离开IE8中的窗口时遇到了一个小问题。我知道只有IE9 +版本支持addEventListener方法,所以我提出了这个解决方案:

function popUp() {
    console.log("i'm leaving")
}

if (window.addEventListener) {
    window.addEventListener("mouseout", popUp);
} else {
    window.attachEvent("mouseout", popUp);
}

它适用于所有主流浏览器,但在IE8中仍然失败。我希望使用jQuery解决问题:

$(window).mouseout(function(){
    popUp()
})

但是,由于this information,在IE8中窗口上的mouseover和mouseout事件都不起作用。

所以问题是,我怎样才能让它在这个相当过时,但不幸的是仍然流行的浏览器中工作?任何帮助都会非常感激

2 个答案:

答案 0 :(得分:0)

window.attachEvent("onmouseout", popUp);

你输了'

答案 1 :(得分:0)

当这些浏览器最新(很久以前)获取指针触发事件的唯一方法是在浏览器之外时,等待blur事件(让用户点击外面):

window.attachEvent
  ? window.attachEvent('onblur', method)
  : window.addEventListener('blur', method);

http://www.quirksmode.org/dom/events/blurfocus.html

或者使用确实具有此功能的Flash - 至少是为了走出舞台。

后备JavaScript方法(或者至少是我所知道的)是在窗口框架内部有一个细边框,如果鼠标在这个区域上移动,它将被视为外部。然而,这并不是绝对可靠的,如果鼠标移动得太快,那么这个区域就会被跳过,而且这个区域会被拖出来。事件不会被触发。

+-----------------------------+
| +-------------------------+ |
| |                         | |
| |                         | |
| |     NOT ACTUAL SIZE *   | |
| |                         | |
| |                         | |
| +-------------------------+ | <-- border region
+-----------------------------+
  

*任何对ascii表示生命或死亡的ascii表示都纯属巧合。

所以不理想,但这些古老的浏览器都不是 - 至少在现代人的眼中。