当前位置:  开发笔记 > 编程语言 > 正文

使用纯JS或jQuery检测浏览器页面窗口何时使用Alt-Tab失去焦点

如何解决《使用纯JS或jQuery检测浏览器页面窗口何时使用Alt-Tab失去焦点》经验,为你挑选了1个好方法。

是否可以检测当前页面是否在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操作.它更清楚了吗?



1> cFreed..:

您可以简单地使用该onfocus事件window,例如:

window.onfocus = function() {
  console.log('Got focus');
}

如果需要,您还可以使用onblur更敏锐的处理方式.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有