## PageVisibility
**1、PageVibility**
PageVisibility API是用于判断页面是否处于浏览器的当前窗口,即是否可见。
这API是部署在`document`对象上的。
**1.1 属性**
它有两个属性:
- `document.hidden`:返回一个布尔值,表示当前是否被隐藏,只读
- `document.visibilityState`:只读,表示页面当前的状态,有四个可能值:`visibile`(页面可见)、`hidden`(页面不可见)、`prerender`(页面正处于渲染之中,不可见)、`unloaded`(如果文档被卸载了)
在使用这两个属性时,要加上不同浏览器的私有前缀:
获取`hidden`属性值:
```
function getHiddenProp() {
var prefixes = ['webkit', 'moz', 'ms', 'o'];
if ( 'hidden' in document) return 'hidden;
for(var i = 0; i < prefixes.length; i++) {
var hidden = prefixes[i] + 'Hidden';
if( hidden in document) {
return hidden;
}
};
return null;
}
```
获取`visibilityState`属性
```
function getVisibilityState() {
var prefixes = ['webkit', 'moz', 'ms', 'o'];
if ( 'visibilityState' in document) return 'visibilityState;
for(var i = 0; i < prefixes.length; i++) {
var visibilityState = prefixes[i] + 'VisibilityState';
if( hidden in document) {
return visibilityState;
}
};
return null;
}
```
**1.2 事件**
当页面的可见状态发生变化时,会触发`visibilityChange`事件(也是需要加上私有前缀)
```
var hidden = getHiddenProp();
var visibilityChange = hidden.split(/[H|h]/, '')[0] + 'visibilitychange';
document.addEventListener(visibilityChange, function(){
console.log( document[getVisibilityState] );
});
```
- 前言
- JavaScript简介
- 基本概念
- 语法
- 数据类型
- 运算符
- 表达式
- 语句
- 对象
- 数组
- 函数
- 引用类型(对象)
- Object对象
- Array对象
- Date对象
- RegExp对象
- 基本包装类型(Boolean、Number、String)
- 单体内置对象(Global、Math)
- console对象
- DOM
- DOM-属性和CSS
- BOM
- Event 事件
- 正则表达式
- JSON
- AJAX
- 表单和富文本编辑器
- 表单
- 富文本编辑器
- canvas
- 离线应用
- 客户端存储(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 检测设备方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向对象的程序设计
- 概述
- this关键字
- 原型链
- 作用域
- 常用API合集
- SVG
- 错误处理机制
- JavaScript开发技巧合集
- 编程风格
- 垃圾回收机制