admin管理员组文章数量:1337106
最近遇见了一个小问题,就是我们支付的时候,会开启一个轮询的情况,但发现用户 把浏览器切换到后台之后,轮训还是继续,这个就有点交互上的小问题了.
查询了下 浏览器有没有 进入不可见的情况的监听事件,没想到还真有
之前我还一直很纳闷, 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('浏览器进入用户视野中')
})
差不多吧。相同的效果
关注我。持续更新 前端知识。
版权声明:本文标题:原生js, 监听移动端浏览器进入后台的情况,和切换到浏览器的操作 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1742571287a2491686.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论