当用户在浏览器中打开多个标签页或者窗口时,他们可能会切换到其他标签页或者应用程序,这样就会导致当前页面失去焦点并进入非活动状态。对于一些Web应用程序,如实时聊天和视频通话等,需要检测当前浏览器窗口是否处于活动状态,以便在用户离开当前页面时采取相应的措施,例如暂停视频播放。
检测浏览器窗口是否处于活动状态的方法
可以通过 document.hidden
属性来检测浏览器窗口是否处于活动状态。该属性返回一个布尔值,表示当前文档是否隐藏。如果文档处于非活动状态,则该属性将返回 true
,否则返回 false
。
if (document.hidden) { // 当前文档处于非活动状态 } else { // 当前文档处于活动状态 }
此外,还可以监听 visibilitychange
事件来检测文档是否隐藏。该事件在文档从可见状态变为不可见状态或从不可见状态变为可见状态时触发。
document.addEventListener("visibilitychange", function() { if (document.hidden) { // 当前文档处于非活动状态 } else { // 当前文档处于活动状态 } });
案例应用
以下是一个示例,展示如何使用 document.hidden
属性和 visibilitychange
事件来检测浏览器窗口是否处于活动状态,并在用户切换到其他标签页或应用程序时暂停视频播放。
-- -------------------- ---- ------- --- ----- - ----------------------------------- -------- --------------------- - -- ----------------- - -------------- - ---- - ------------- - - --------------------------------------------- --------------------- ----------------------
上述代码中,我们首先获取了 video
元素并定义了一个 checkPageVisibility
函数。在该函数中,如果当前文档处于非活动状态,则暂停视频播放;否则继续播放。然后,我们将 checkPageVisibility
函数监听到 visibilitychange
事件上,并在页面加载时调用该函数一次以确保视频的播放状态正确。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/8176