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

阅读: 评论:0

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

查询了下 浏览器有没有 进入不可见的情况的监听事件,没想到还真有
之前我还一直很纳闷, 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('浏览器进入用户视野中')
 })

差不多吧。相同的效果

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

本文发布于:2025-03-21 23:34:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1742571288582998.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:浏览器   切换到   后台   情况   操作
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23