我编写了一段代码来检测用户是否要离开浏览器窗口。 (就像锁定浏览器一样) 首先,我全屏打开页面。
document.documentElement.requestFullscreen();
然后我将事件监听器添加到窗口中,如下所示。
window.addEventListener('blur', onBlur);
我尝试过的大多数笔记本电脑设备,如果窗口失去焦点,都会成功触发 onBlur 函数。 但有些笔记本电脑在全屏显示时不会触发 onBlur 功能。到目前为止,我仅在 HP 笔记本电脑上发现此问题。它使用的是 intel Iris GPU。
我也尝试将模糊事件侦听器添加到 document.body 中。没成功。
当窗口失去焦点时,是否还有其他事件监听器比
blur
工作得更好?
更新 我也尝试了
window.addEventListener('visibilitychange', onBlur)
。但是使用 ALT+TAB 切换程序/窗口或单击任务栏时不会触发 visibilitychange
事件
监听
blur
事件并不是完美的解决方案,因为(正如你所写的)你在不同的浏览器中得到不一致的结果。
检测用户是否在页面上的更可预测和标准的方法是使用
addEventListener("visibilitychange", onVisibilityChange)
,您可以在 event.visibilityState
中观察当前页面状态