简介
作为本站推荐小编,我要告诉大家如何监听页面用户离开事件。一般来说,可以监听pagehide、beforeunload以及unload这三种事件。但是在手机上可能会存在bug,因为手机系统会将进程切换到后台并杀死,导致这些事件没有被触发。不过现在有了PageVisibilityAPI,它能够监听网页的可见性,预测网页的卸载,减少电能消耗和节省资源。

document.visibilityState
PageVisibilityAPI在document对象上新增了一个document.visibilityState属性,它能够返回当前页面的可见性状态,分为hidden(完全不可见)、visible(至少一部分可见)和prerender(正在渲染中)三种状态。其中hidden和visible是所有浏览器都支持的,prerender状态只在浏览器支持预渲染功能的情况下才会出现,比如Chrome浏览器。无论页面可见与否,只要页面的一部分可见,document.visibilityState属性就会返回visible;而只有在浏览器最小化、切换页面、浏览器将要卸载或系统锁屏时,属性值才会变成hidden。
visibilitychange事件
当document.visibilityState属性发生变化时,就会触发visibilitychange事件。我们可以通过监听该事件来跟踪页面可见性的变化。举个例子,当页面不可见时暂停视频播放,而当页面可见时继续播放。
var vidElem = document.getElementById('video-demo');
document.addEventListener('visibilitychange', startStopVideo);
function startStopVideo() {
if (document.visibilityState === 'hidden') {
vidElem.pause();
} else if (document.visibilityState === 'visible') {
vidElem.play();
}
}
PageVisibilityAPI的可靠性比pagehide、beforeunload、unload事件更高,并且无论何时都会触发(从visible变为hidden)。因此,我们只需要监听visibilitychange事件来运行页面卸载时需要运行的代码,而无需监听其它事件。
总之,PageVisibilityAPI提供了一种更加可靠的方式来监听页面的可见性,并能够预测页面的卸载。通过这个API,我们能够更好地节省资源和减缓电能的消耗。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7293.html
