我在检测用户何时离开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事件都不起作用。
所以问题是,我怎样才能让它在这个相当过时,但不幸的是仍然流行的浏览器中工作?任何帮助都会非常感激
答案 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表示都纯属巧合。
所以不理想,但这些古老的浏览器都不是 - 至少在现代人的眼中。