通过 document.hidden 与 visibilitychange 事件判断网页可见性和操作
小程序的应用的生命周期很完美了,网页就不太理想了,不过我们可以通过相关的函数去实现类似的功能,最常见的就是在观看视频的时候,如果用户切换了标签或者是打开了其他应用程序,我们可以暂停视频的播放,当用户回来的时候,我们再继续播放。
页面的展示的状态的判断就需要用到 HTML5 新增的API:document.hidden。
- document.hidden 属性:boolean类型,表示页面是否处于隐藏状态。页面隐藏包括页面在后台标签页或者浏览器最小化。
- visibilitychange 事件:当文档的可见性改变时触发。
于是我们就这样编写代码了:
var hidden, visibilityChange;if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
hidden = "mozHidden";
visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
// 添加监听器
document.addEventListener(visibilityChange, function() {
console.log("当前页面是否被隐藏:" + document[hidden]);
}, false);
上面的代码在 PC 上运行没什么问题,但是在 手机 QQ 浏览器 上就没啥效果了,因为手机 QQ 浏览器的网页永远都不会被挂起,所以 visibilitychange
事件不会被触发。
手机 QQ 浏览器为了解决这个问题向开发者提供了一个叫 qbrowserVisibilityChange
的事件:https://open.mobile.qq.com/api/common/index#api:qbrowserVisibilityChange
能过这个事件可以监听手机 QQ 浏览器是否被挂起(注意我这里说的是手机 QQ 浏览器是否被挂,不是说手机 QQ 浏览器的网页被挂起)。如果按照腾讯提供 API ,那么调用 qbrowserVisibilityChange
方法如下:
document.addEventListener("qbrowserVisibilityChange", function(e){if(e.hidden) {
// 手Q被挂起
} else {
// 手Q被呼起
}
});
微信是支持 visibilitychange 事件的,这也就是说微信被挂起时,微信的内嵌页面也会被挂起,可以使用以下方法来监听微信网页的挂起状态:
ocument.addEventListener("qbrowserVisibilityChange", function(e){var evt = document.createEvent("HTMLEvents");
evt.initEvent("visibilitychange", false, false);
evt.hidden = e.hidden;
document.dispatchEvent(evt);
}, true);
document.addEventListener("visibilitychange", function(e) {
e.hidden = e.hidden === undefined ? document.hidden : e.hidden;
}, true);
在业务代码直接引用下面的代码:
document.addEventListener("visibilitychange", function(e) {text.innerHTML = e.hidden;
if(e.hidden) {
// 网页被挂起
} else {
// 网页被呼起
}
});
以上是 通过 document.hidden 与 visibilitychange 事件判断网页可见性和操作 的全部内容, 来源链接: utcz.com/p/232112.html