是否可以检测当前页面是否在alt-tab中?此代码仅在打开浏览器中的新选项卡时有效:
(function() { var hidden = "hidden"; // Standards: if (hidden in document) document.addEventListener("visibilitychange", onchange); else if ((hidden = "mozHidden") in document) document.addEventListener("mozvisibilitychange", onchange); else if ((hidden = "webkitHidden") in document) document.addEventListener("webkitvisibilitychange", onchange); else if ((hidden = "msHidden") in document) document.addEventListener("msvisibilitychange", onchange); // IE 9 and lower: else if ("onfocusin" in document) document.onfocusin = document.onfocusout = onchange; // All others: else window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange; function onchange (evt) { var v = "visible", h = "hidden", evtMap = { focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h }; evt = evt || window.event; if (evt.type in evtMap) document.body.className = evtMap[evt.type]; else document.body.className = this[hidden] ? "hidden" : "visible"; //console.log(this[hidden] ? "hidden" : "visible"); } // set the initial state (but only if browser supports the Page Visibility API) if( document[hidden] !== undefined ) onchange({type: document[hidden] ? "blur" : "focus"}); })();
但是这段代码既没有检测到浏览器的新窗口,也没有检测到任何其他程序的alt-tab.有可能检测到它吗?还是在jQuery中?
编辑 新页面表示Ctrl(cmd)+ N(新窗口)热键.上面的代码无法检测到这一点.Alt(cmd)+ tab到另一个程序 - 也无法检测到.上面的代码只能检测Ctrl(cmd)+ T(新标签)
编辑
我想检测用户何时从另一个应用程序返回我的网站.也就是说,如果用户关闭任何标签(例如,通过Ctrl + W)并返回到我的网站,我可以使用上面的脚本检测此操作.但是如果用户从另一个应用程序返回我的网站(例如,通过Alt + Tab),脚本不起作用,因为window.onfocus
不会被触发!那是,
window.onpageshow = window.onpagehide = window.onfocus = window.onblur
不适用于Alt + Tab操作.它更清楚了吗?
您可以简单地使用该onfocus
事件window
,例如:
window.onfocus = function() { console.log('Got focus'); }
如果需要,您还可以使用onblur
更敏锐的处理方式.