最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin1浏览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('浏览器进入用户视野中')
 })

差不多吧。相同的效果

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

发布评论

评论列表(0)

  1. 暂无评论