Javascript 如果鼠标光标不在';你不能碰边缘吗?

Javascript 如果鼠标光标不在';你不能碰边缘吗?,javascript,Javascript,我正在为一项看似简单的任务寻找一种非JQuery的解决方案:检测鼠标何时离开页面。但是,标准方法使用: document.onmouseleave //or document.onmouseout 仅当鼠标通过边缘离开页面时,此选项才起作用 这意味着,如果鼠标进入另一个具有更高焦点的程序(例如:Notepad.exe)而离开,它将失败。 如果浏览器最小化(例如:Win+D),或者使用Alt+Tab,它也会失败。 它可能会以其他方式失败 还有哪些方法能更好地检测出老鼠的离开?甚至可能通过民意测验

我正在为一项看似简单的任务寻找一种非JQuery的解决方案:检测鼠标何时离开页面。但是,标准方法使用:

document.onmouseleave
//or
document.onmouseout
仅当鼠标通过边缘离开页面时,此选项才起作用

这意味着,如果鼠标进入另一个具有更高焦点的程序(例如:Notepad.exe)而离开,它将失败。
如果浏览器最小化(例如:Win+D),或者使用Alt+Tab,它也会失败。 它可能会以其他方式失败

还有哪些方法能更好地检测出老鼠的离开?甚至可能通过民意测验?
这必须适用于Chrome+Windows,但最好是任何现代浏览器

更新
dman2306链接了一些检测浏览器何时最小化的方法,包括:

document.addEventListener("visibilitychange", function() {
  doThings();
}, false);
我刚刚在Windows8.1的最新版本的Chrome上验证了这一点


这只会留下光标通过另一个窗口的边缘或Alt+Tab退出的问题。

您可以为解决方案添加另一个onfocusout事件处理程序,该处理程序将检测另一个程序是否获得焦点或窗口是否最小化。

有一个事件
onblur
符合您的要求

    window.onblur = function () {
        console.log('blur');
    }

这样做的原因是什么?最小化实际上并不意味着鼠标左移,但无论如何,您可以使用此技术@dman2306检测最小化,如果鼠标在Excel中单击内容,您真的会说它仍在浏览器中吗?我指的是您的win+D示例,不是在另一个应用程序示例中单击。@dman2306一旦最小化,鼠标仍然不在浏览器中。一旦退出,它可以点击其他东西。也许这就是语义学?也许正确的词是“插入符号”或什么的。不管怎样,你的链接都有助于最小化检测,所以谢谢你。我只是尝试在Chrome中使用“document.onfocusout=function(){alert(“test”)};”,但无法触发alert()。尽管它应该可以在Chrome上工作,但请尝试使用“onblur”事件。确实有效!因此,通过将window.onblur与document.onmouseleave相结合,我无法找到一种方法来欺骗页面,使其认为鼠标仍在页面中@Bort-如果这确实解决了您的问题,请将此答案标记为答案。是的,我会的,但我通常会留出一些时间让其他人证明另一个答案是错误/错误/低效的。有可能是我遗漏了另一个事件。没有
文档。onmouseleave
。有
window.onmouseout
window.onmouseleave
<代码>窗口.onmouseout每个元素上都有气泡。这取决于你。window.onmouseleave对我没有任何影响。。。document.onmouseloave工作得很好。