是的,浏览器提供了多个与窗口焦点相关的事件,用于检测用户是否切换了当前页面的焦点状态。以下是相关的基础概念、事件类型、应用场景及示例代码:
窗口焦点事件用于监听浏览器标签页或窗口是否获得/失去焦点,常用于优化资源使用(如暂停视频播放)、统计用户活跃度或安全验证(如检测页面是否被隐藏)。
focus
和 blur
focus
:当窗口或元素获得焦点时触发(如用户切换回当前标签页)。blur
:当窗口或元素失去焦点时触发(如用户切换到其他标签页)。window
对象,兼容性好。visibilitychange
document.visibilityState
(值为 "visible"
或 "hidden"
)。focus
和 blur
示例window.addEventListener('focus', () => {
console.log('窗口获得焦点');
// 恢复操作(如播放视频)
});
window.addEventListener('blur', () => {
console.log('窗口失去焦点');
// 暂停操作(如停止动画)
});
visibilitychange
示例document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
console.log('页面可见');
} else {
console.log('页面隐藏');
}
});
window
或 document
。console.log
调试或尝试 pageshow
/pagehide
事件作为补充。blur
事件支持不完善,建议优先使用 visibilitychange
。focus
/blur
:所有主流浏览器支持。visibilitychange
:IE10+ 及现代浏览器支持(需前缀处理旧版浏览器)。通过合理选择事件类型,可以高效实现焦点相关的交互逻辑。
没有搜到相关的文章