最近活动中的小游戏,有涉及页面隐藏或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

最新文章

  1. mysql百万级分页优化
  2. django的cookie和session以及内置信号、缓存
  3. [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
  4. 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor
  5. htm.dropdownlist
  6. poj 1159 Palindrome
  7. Scrum 项目5.0
  8. JavaScript探秘系列
  9. Web Api 入门
  10. Wpf解决TextBox文件拖入问题、拖放问题
  11. sql的一点总结&lt;一&gt;
  12. 2.Java 加解密技术系列之 MD5
  13. java连接sqlserver2008r2 心得
  14. 南天PR2、PR2E驱动下载,xp,win7,win8,win8.1,win10 32位64位驱动下载安装教程
  15. Java map 详解
  16. Python之对象的永久保存模块---pickle
  17. 自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)
  18. github帐户和仓库的创建
  19. call,apply,bind
  20. 【BZOJ3831】[Poi2014]Little Bird 单调队列

热门文章

  1. 网页更换主题以及绘制图形js代码实现
  2. java后台poi根据模板导出excel
  3. nginx 报错: nginx: [emerg] open() &quot;/etc/nginx/nginx.conf&quot; failed (2: No such file or directory)
  4. 前端性能优化JavaScript篇
  5. (转)数据库老兵:NewSQL才是未来
  6. composer安装教程(Linux版)
  7. 深入理解PHP数组函数和预定义接口
  8. 笨小熊 南阳acm62
  9. Linux之rsync同步工具介绍+inotify同步
  10. 万年历Calendar、js修改日期