原生js, 监听移动端浏览器进入后台的情况,和切换到浏览器的操作

本文介绍了如何使用JavaScript的visibilitychange事件来监听浏览器页面的可见性状态,以便在用户将浏览器切换到后台时停止不必要的操作,如轮询。通过监听visibilityState属性,可以判断页面是在前台还是后台,从而优化用户体验。此外,还提到了在苹果设备上可能需要结合pagehide和pageshow事件来实现更精确的监听,并提到这些事件在不同浏览器的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇见了一个小问题,就是我们支付的时候,会开启一个轮询的情况,但发现用户 把浏览器切换到后台之后,轮训还是继续,这个就有点交互上的小问题了.

查询了下 浏览器有没有 进入不可见的情况的监听事件,没想到还真有
之前我还一直很纳闷, uniapp 是怎么监听onShow 和 onHide的方法。看了这个事件后,我似乎有些清晰了。

visibilitychange 监听文档的是否可视化。
同时查看浏览器可视化状态是什么
Document.visibilityState 可见性状态


**Document.visibilityState (只读属性), 返回document的可见性, 即当前可见元素的上下文环境. 由此可以知道当前文档(即为页面)是在背后, 或是不可见的隐藏的标签页,或者(正在)预渲染.可用的值如下:

‘visible’ : 此时页面内容至少是部分可见. 即此页面在前景标签页中,并且窗口没有最小化.

‘hidden’ : 此时页面对用户不可见. 即文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 ‘锁屏状态’ .

‘prerender’ : 页面此时正在渲染中, 因此是不可见的 (considered hidden for purposes of document.hidden). 文档只能从此状态开始,永远不能从其他值变为此状态.注意: 浏览器支持是可选的.
当此属性的值改变时, 会递交 visibilitychange (en-US) 事件给Document**


 document.addEventListener('visibilitychange', () => {
            if (document.visibilityState == "visible") {
                alert('浏览器进入用户视野中')
            } else {
                alert('浏览器消失用户视野中')
            }
        })

这样就可以监听到 用户的浏览器是否切换到后台了。

还有就是其实吧window也可以监听这个事件但是,确保兼容性还是使用document来做监听

在苹果上可能表现的不太一样。这个时候我们像监听的话 其实还可以监听 pagehide方法 和 pageshow的方法

有点问题哈,在谷歌上面这个pagehide并没有生效,但是pageshow是可以,这个以后我再研究研究

window.addEventListener('pagehide', () => {
                alert('浏览器消失用户视野中')
 })
window.addEventListener('pageshow', () => {
                alert('浏览器进入用户视野中')
 })

差不多吧。相同的效果

关注我。持续更新 前端知识。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunchong_zhao

帮到你了,请作者喝杯矿泉水可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值