主动窗口检测

我正在检查当前选项卡/窗口是否专注于执行某项特定任务。以下function正在用于检测焦点,当我切换标签时但是当标签打开并且我打开软件时(音乐播放器/窗口)文件夹)保持选项卡处于活动/打开状态,该function仍然认为窗口/选项卡是聚焦的!我想要实现的情况是检测窗口/选项卡由于在当前聚焦的窗口打开应用程序/软件而失去焦点/tab。如果你根据我的代码提供一个jsfiddle你的答案,那将是很棒的!

$(document).ready(function() { var hidden, change, vis = { hidden: "visibilitychange", mozHidden: "mozvisibilitychange", webkitHidden: "webkitvisibilitychange", msHidden: "msvisibilitychange", oHidden: "ovisibilitychange" /* not currently supported */ }; for (hidden in vis) { if (vis.hasOwnProperty(hidden) && hidden in document) { change = vis[hidden]; break; } } if (change) document.addEventListener(change, onchange); else if (/*@cc_on!@*/false) // IE 9 and lower document.onfocusin = document.onfocusout = onchange else window.onfocus = window.onblur = onchange; function onchange (evt) { evt = evt || window.event; if (evt.type == "focus" || evt.type == "focusin") window_focus = true; else if (evt.type == "blur" || evt.type == "focusout") window_focus = false; else window_focus = this[hidden] ? false : true; } }); 

帧:

     

您可以使用window.onfocuswindow.onblur代替那段代码。 它受到所有主流浏览器的支持,可以完美地满足您的需求。 例如,它会检测您更改选项卡的时间,或者按照您的说明打开另一个应用程序。

例:

 window.onfocus = function() { console.log('Focused'); }; window.onblur = function() { console.log('Not focused'); };