h5 Visibility API总结
2024-08-28 23:03:51
最近活动中的小游戏,有涉及页面隐藏或app后台运行时候,暂停游戏的功能,使用了h5的Visibility API,在此总结如下:
两个属性
document.hidden (Read only)
如果页面处于被认为是对用户隐藏状态时返回true,否则返回false。
document.visibilityState (Read only)
是一个用来展示文档可见性状态的字符串。可能的值:
visible : 页面内容至少是部分可见。 在实际中,这意味着页面是非最小化窗口的前景选项卡。
hidden : 页面内容对用户不可见。 在实际中,这意味着文档可以是一个后台标签,或是最小化窗口的一部分,或是在操作系统锁屏激活的状态下。
prerender : 页面内容正在被预渲染且对用户是不可见的(被document.hidden当做隐藏). 文档可能初始状态为prerender,但绝不会从其它值转为该值。 注释:浏览器支持是可选的。
unloaded : 页面正在从内存中卸载。 注释:浏览器支持是可选的。
一个事件
document.addEventListener("visibilitychange", handleVisibilityChange, false); function handleVisibilityChange() {
if (document.hidden) {
pauseSimulation();
} else {
startSimulation();
}
}
在主流浏览器和mobile浏览器上都有不错的兼容性
示例代码:
//获取带前缀的事件
// Get Browser-Specifc Prefix
function getBrowserPrefix() {
if ('hidden' in document) {
return null;
}
var browserPrefixes = ['moz', 'ms', 'o', 'webkit'];
for (var i = 0; i < browserPrefixes.length; i++) {
var prefix = browserPrefixes[i] + 'Hidden';
if (prefix in document) {
return browserPrefixes[i];
}
} return null;
} function hiddenProperty(prefix) {
if (prefix) {
return prefix + 'Hidden';
} else {
return 'hidden';
}
} function visibilityState(prefix) {
if (prefix) {
return prefix + 'VisibilityState';
} else {
return 'visibilityState';
}
} function visibilityEvent(prefix) {
if (prefix) {
return prefix + 'visibilitychange';
} else {
return 'visibilitychange';
}
} var prefix = getBrowserPrefix();
var hidden = hiddenProperty(prefix);
var visibilityState = visibilityState(prefix);
var visibilityEvent = visibilityEvent(prefix); var timer = null; function increaseVal() {
var newVal = parseInt($('#valueContainer').text()) + parseInt(1);
$('#valueContainer').text(newVal);
document.title = newVal + ': Running'; timer = setTimeout(function() {
increaseVal();
}, 1);
} // Visibility Change
document.addEventListener(visibilityEvent, function(event) {
if (document[hidden]) {
clearTimeout(timer);
var val = parseInt($('#valueContainer').text());
document.title = val + ': Pause';
} else {
increaseVal();
}
}); increaseVal();
参考:https://code.tutsplus.com/articles/html5-page-visibility-api--cms-22021
https://developer.mozilla.org/zh-CN/docs/Web/API/Page_Visibility_API
最新文章
- mysql百万级分页优化
- django的cookie和session以及内置信号、缓存
- [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
- 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor
- htm.dropdownlist
- poj 1159 Palindrome
- Scrum 项目5.0
- JavaScript探秘系列
- Web Api 入门
- Wpf解决TextBox文件拖入问题、拖放问题
- sql的一点总结<;一>;
- 2.Java 加解密技术系列之 MD5
- java连接sqlserver2008r2 心得
- 南天PR2、PR2E驱动下载,xp,win7,win8,win8.1,win10 32位64位驱动下载安装教程
- Java map 详解
- Python之对象的永久保存模块---pickle
- 自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)
- github帐户和仓库的创建
- call,apply,bind
- 【BZOJ3831】[Poi2014]Little Bird 单调队列
热门文章
- 网页更换主题以及绘制图形js代码实现
- java后台poi根据模板导出excel
- nginx 报错: nginx: [emerg] open() ";/etc/nginx/nginx.conf"; failed (2: No such file or directory)
- 前端性能优化JavaScript篇
- (转)数据库老兵:NewSQL才是未来
- composer安装教程(Linux版)
- 深入理解PHP数组函数和预定义接口
- 笨小熊 南阳acm62
- Linux之rsync同步工具介绍+inotify同步
- 万年历Calendar、js修改日期