gpt4 book ai didi

javascript - 有没有办法检测浏览器窗口当前是否处于事件状态?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:51 24 4
gpt4 key购买 nike

我有定期执行事件的 JavaScript。当用户没有查看站点时(即窗口或选项卡没有焦点),最好不要运行。

有没有办法使用 JavaScript 来做到这一点?

我的引用点:如果您使用的窗口未处于事件状态,Gmail Chat 会播放声音。

最佳答案

自最初撰写此答案以来,由于 W3C,一项新规范已达到推荐状态。 Page Visibility API (在 MDN 上)现在允许我们更准确地检测页面何时对用户隐藏。

document.addEventListener("visibilitychange", onchange);

当前浏览器支持:

  • Chrome 13+
  • Internet Explorer 10+
  • 火狐 10+
  • Opera 12.10+ [ read notes ]

以下代码在不兼容的浏览器中回退到不太可靠的模糊/聚焦方法:

(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";
}

// set the initial state (but only if browser supports the Page Visibility API)
if( document[hidden] !== undefined )
onchange({type: document[hidden] ? "blur" : "focus"});
})();

onfocusinonfocusoutrequired for IE 9 and lower ,而所有其他人都使用 onfocusonblur,除了 iOS,它使用 onpageshowonpagehide

关于javascript - 有没有办法检测浏览器窗口当前是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com