前端监听页面显示隐藏 visibilitychange

业务场景

当前页面再次可见时(从其他tab页切换过来或者从其他软件切换过来),重新调用接口获取最新数据。

使用

通过 document.visibilityState 判断页面隐藏还是显示。

document.visibilityState 有两个值:

  • hidden 页面从显示到隐藏时的状态
  • visible  页面从隐藏到显示时的状态
document.addEventListener("visibilitychange", function() {
    if (document.visibilityState === 'hidden') {
        // 被隐藏了
    } else if (document.visibilityState === 'visible') {
        // 页面显示了
    }
});

为什么不用window.onblur、window.onfocus?

window.onblur和window.onfocus监听的是页面的失焦、聚焦,和我们需求不符合。比如,我在页面和控制台之间来回点击,就会频繁触发这两个事件。而且,从其他页面切到当前页面时,如果不点击一下页面,不会聚焦,也就不会触发window.onfocus事件。

window.addEventListener('blur', () => {
    console.log('blur');
});
window.addEventListener('focus', () => {
    console.log('focus');
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值