【发布时间】:2016-05-27 00:06:08
【问题描述】:
我正在为一个看似简单的任务寻找非 JQuery 解决方案:检测鼠标何时离开页面。但是,标准方法使用:
document.onmouseleave
//or
document.onmouseout
仅当鼠标通过边缘离开页面时才会起作用。
这意味着如果鼠标通过进入另一个具有更高焦点的程序(例如:Notepad.exe)而离开,它将失败。
如果浏览器被最小化(例如:Win+D),或者如果Alt+Tab,它也会失败用来。
可能还有其他方法会失败。
还有哪些其他方法可以更好地检测鼠标离开?也许甚至通过投票?
这必须在 Chrome+Windows 中工作,但最好是在任何现代浏览器中。
更新:
dman2306 已链接到一些用于检测浏览器何时最小化的方法,包括:
document.addEventListener("visibilitychange", function() {
doThings();
}, false);
我刚刚验证了它适用于 Windows 8.1 上最新版本的 Chrome。
这只会留下光标通过另一个窗口边缘或通过 Alt+Tab 退出的问题。
【问题讨论】:
-
这样做的原因是什么?
-
最小化并不意味着鼠标离开了,但无论如何你可以通过使用这种技术来检测最小化stackoverflow.com/questions/10328665/…
-
@dman2306 如果鼠标在 Excel 中点击,你真的会说它还在浏览器中吗?
-
我指的是您的 win+D 示例,而不是在另一个应用程序示例中的点击。
-
@dman2306 好吧,一旦它被最小化,鼠标仍然不在浏览器中。而且一旦出来,就可以点击其他东西了。也许这是语义?也许正确的词是“插入符号”之类的。无论哪种方式,您的链接都有助于最小化检测,所以谢谢。
标签: javascript