图片 1

HTML5中与页面显示相关的API,API详细介绍

HTML5中与页面展现相关的API

2015/05/15 · HTML5 ·
HTML5

初藳出处:
涂根华的博客   

在HTML5中,扩充了2个与页面呈现相关的API,分别是Page Visibility
API与Fullscreen API; 成效分别如下:

Page Visibility API 
是指当页面变为最小化状态或然客户将浏览器标签切换成任何标签时会触发。

Fullscreen API 是将页面全部或页面中有些局地区域设为全屏。

Page Visibility API的行使场馆如下:

  1. 二个应用程序中兼有多幅图片的幻灯片式的接连播发效果,当页面变为不可以知道状态(最小化状态或许将顾客浏览器标签切换成此外标签时),图片停播,当页面变为可知状态时,图片继续播放。
  2. 在叁个实时呈现服务器端音讯的应用程序中,当页面处于不可以预知状态(最小化状态只怕将顾客浏览器标签切换来任何标签时),停止准期向劳动器端央浼数据的拍卖,当页面变为可以看到状态,继续实施准期向服务器端诉求数据的拍卖。
  3. 在一个兼有播放摄像作用的应用程序中,当页面处于不可以见到状态(最小化状态可能将客户浏览器标签切换成别的标签时),暂停播放摄像,当页面变为可以知道状态时,继续播放录像。

浏览器支持程度:Firefox10+,chrome14+,IE10+;

实现Page Visibility API

在采纳Page Visibility
API时,我们先是需求看清当前客商所使用的浏览器以至该浏览器是或不是扶助。代码如下剖断:

JavaScript

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’; }

1
2
3
4
5
6
7
8
9
10
11
12
13
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’;
}

如上,在Page Visibility
 API中,能够透过document对象的hidden属性值来推断页面是还是不是处在可以见到状态,当页面处于可以看到状态时属性值为false,当页面处于不可以见到状态时属性值为true。

在Page
Visibility中,能够经过document对象的visibilityState属性值来决断页面包车型客车可以预知状态。该属性值为几个字符串,其意思如下所示:

   
visible:
 页面内容部分可以看见,当前页面位于客商正在查阅的浏览器标签窗口中,且浏览器窗口未被最小化。

   
hidden:
 页面内容对客户不可以看见。当前页面不在客户正在查看的浏览器标签窗口中,或浏览器窗口已被最小化。

    prerender: 页面内容已被预渲染,不过对客商不可以看到。

今天大家来看三个demo,页面中有贰个video成分与三个”播放”开关,客户单击”播放”按键时
按键文字变为
’暂停”,同一时候开始播放video元素的录像,当页面变为最小化状态或客商浏览器标签切换成别的标签时候,录制被中止播放,当页面复苏符合规律状态或顾客将浏览器标签切回页面所在标签时,录像持续播放。

HTML代码如下:

JavaScript

<video id=”videoElement” controls width=640 height=360 autoplay>
<source src=”Wildlife/Wildlife.ogv” type=’video/ogg; codecs=”theora,
vorbis”‘/> <source src=”Wildlife/Wildlife.webm” type=’video/webm’
> <source src=”Wildlife/Wildlife.mp4″ type=’video/mp4′>
</video> <button id=”btnPlay”
onclick=”PlayOrPause()”>播放</button> <div
style=”height:1500px;”></div>

1
2
3
4
5
6
7
<video id="videoElement" controls width=640 height=360 autoplay>
    <source src="Wildlife/Wildlife.ogv" type=’video/ogg; codecs="theora, vorbis"’/>
    <source src="Wildlife/Wildlife.webm" type=’video/webm’ >
    <source src="Wildlife/Wildlife.mp4" type=’video/mp4′>
</video>
<button id="btnPlay" onclick="PlayOrPause()">播放</button>
<div style="height:1500px;"></div>

JS代码如下:

JavaScript

var hidden, visibilityChange, videoElement; 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.add伊芙ntListener(visibilityChange,handle,false); videoElement =
document.getElementById(“videoElement”);
videoElement.add伊夫ntListener(‘ended’,videoEnded,false);
videoElement.addEventListener(‘play’,videoPlay,false);
videoElement.addEventListener(‘pause’,videoPause,false); //
假如页面变为不可以知道状态 则暂停摄像播放 //
若是页面变为可以见到状态,则继续摄像播放 function handle() { //
通过visibilityState属性值判别页面的可知状态
console.log(document.visibilityState); if(document[hidden]) {
videoElement.pause(); }else { videoElement.play(); } } // 播放视频function play() { videoElement.play(); } // 暂停止播放放 function pause() {
videoElement.pause(); } function PlayOrPause() { if(videoElement.paused)
{ videoElement.play(); }else { videoElement.pause(); } } function
videoEnded(e) { videoElement.currentTime = 0; this.pause(); } function
videoPlay(e) { var btnPlay = document.getElementById(“btnPlay”);
btnPlay.innerHTML = “暂停”; } function videoPause(e) { var btnPlay =
document.getElementById(“btnPlay”); btnPlay.innerHTML = “播放”; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var hidden,
visibilityChange,
videoElement;
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,handle,false);
videoElement = document.getElementById("videoElement");
videoElement.addEventListener(‘ended’,videoEnded,false);
videoElement.addEventListener(‘play’,videoPlay,false);
videoElement.addEventListener(‘pause’,videoPause,false);
// 如果页面变为不可见状态 则暂停视频播放
// 如果页面变为可见状态,则继续视频播放
function handle() {
    // 通过visibilityState属性值判断页面的可见状态
    console.log(document.visibilityState);
    if(document[hidden]) {
        videoElement.pause();    
    }else {
        videoElement.play();
    }
}
// 播放视频
function play() {
    videoElement.play();
}
// 暂停播放
function pause() {
    videoElement.pause();
}
function PlayOrPause() {
    if(videoElement.paused) {
        videoElement.play();
    }else {
        videoElement.pause();
    }
}
function videoEnded(e) {
    videoElement.currentTime = 0;
    this.pause();
}
function videoPlay(e) {
    var btnPlay = document.getElementById("btnPlay");
    btnPlay.innerHTML = "暂停";
}
function videoPause(e) {
    var btnPlay = document.getElementById("btnPlay");
    btnPlay.innerHTML = "播放";
}

实现Fullscreen API

在HTML5中,新扩大了三个Fullscreen
API,其意义是将页面全部或页面中有些局地区域设为全屏展现状态。

浏览器协理程度:Firefox10+,chrome16+,Safari5.1+

在Fullscreen
API中,能够通过DOM对象的根节点指标或某些成分的requestFullscreen属性值和举办相呼应的秘诀来推断浏览器是还是不是扶助Fullscreen
API。代码如下:

JavaScript

var docElm = document.documentElement; if(docElm.requestFullscreen) {
docElm.requestFullscreen(); }else if(docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen(); }else if(docElm.webkitRequestFullScreen)
{ docElm.webkitRequestFullScreen(); }

1
2
3
4
5
6
7
8
var docElm = document.documentElement;
if(docElm.requestFullscreen) {
        docElm.requestFullscreen();
}else if(docElm.mozRequestFullScreen) {
        docElm.mozRequestFullScreen();
}else if(docElm.webkitRequestFullScreen) {
        docElm.webkitRequestFullScreen();
}

在Fullscreen
API中,也得以因而DOM对象或有个别成分的exitFullscreen与CanvelFullScreen属性和章程将日前页面或有些成分设定为非全屏突显状态。

如下代码:

JavaScript

if(document.exitFullscreen) { document.exitFullscreen(); }else
if(document.mozCancelFullScreen) { document.mozCancelFullScreen(); }else
if(document.webkitCancelFullScreen) { document.webkitCancelFullScreen();
}

1
2
3
4
5
6
7
if(document.exitFullscreen) {
    document.exitFullscreen();
}else if(document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
}else if(document.webkitCancelFullScreen) {
    document.webkitCancelFullScreen();
}

在Fullscreen
API中,能够通过监听DOM对象或有些成分的fullscreenchange事件(当页面或因素从非全屏展现状态成为全屏呈现状态,或从全屏彰显状态产生非全屏彰显状态时触发)。代码如下:

JavaScript

document.addEventListener(‘fullscreenchange’,function(){},false);
document.addEventListener(‘mozfullscreenchange’,function(){},false);
document.addEventListener(‘webkitfullscreenchange’,function(){},false);

1
2
3
document.addEventListener(‘fullscreenchange’,function(){},false);
document.addEventListener(‘mozfullscreenchange’,function(){},false);
document.addEventListener(‘webkitfullscreenchange’,function(){},false);

在css样式代码中,我们得以使用伪类选用器来单独钦定处于全屏显示状态的页面或因素样式:

JavaScript

html:-moz-full-screen { background:red; } html:-webkit-full-screen {
background:red; } html:fullscreen { background:red; }

1
2
3
4
5
6
7
8
9
html:-moz-full-screen {
    background:red;
}
html:-webkit-full-screen {
    background:red;
}
html:fullscreen {
    background:red;
}

提起底大家来看三个demo,在页面中有一个开关,点击后,页面会形成全屏状态,再点击后,页面会脱离全屏;

HTML代码如下:

JavaScript

<input type=”button” id=”btnFullScreen” value=”页面全屏彰显”
onclick=”toggleFullScreen();”/> <div style=”width:百分百;”
id=”fullscreentState”>非全屏展现</div>

1
2
<input type="button" id="btnFullScreen" value="页面全屏显示" onclick="toggleFullScreen();"/>
<div style="width:100%;" id="fullscreentState">非全屏显示</div>

Javascript如下:

JavaScript

var docElm = document.documentElement; var fullscreentState =
document.getElementById(“fullscreentState”); var btnFullScreen =
document.getElementById(“btnFullScreen”); fullscreentState.style.height
= docElm.clientHeight + ‘px’;
document.add伊芙ntListener(‘fullscreenchange’,function(){
fullscreentState.innerHTML = (document.fullscreen) ? “全屏展现” :
“非全屏突显”; },false);
document.add伊夫ntListener(‘mozfullscreenchange’,function(){
fullscreentState.innerHTML = (document.mozFullscreen) ? “全屏突显” :
“非全屏呈现”; },false);
document.addEventListener(‘webkitfullscreenchange’,function(){
fullscreentState.innerHTML = (document.webkitFullscreen) ? “全屏展现” :
“非全屏展现”; },false); function toggleFullScreen() {
if(btnFullScreen.value == ‘页面全屏突显’) { btnFullScreen.value =
‘页面非全屏突显’; if(docElm.requestFullscreen) {
docElm.requestFullscreen(); }else if(docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen(); }else if(docElm.webkitRequestFullScreen)
{ docElm.webkitRequestFullScreen(); } }else {
if(document.exitFullscreen) { document.exitFullscreen(); }else
if(document.mozCancelFullScreen) { document.mozCancelFullScreen(); }else
if(document.webkitCancelFullScreen) { document.webkitCancelFullScreen();
} btnFullScreen.value = “页面全屏展现”; } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var docElm = document.documentElement;
var fullscreentState = document.getElementById("fullscreentState");
var btnFullScreen = document.getElementById("btnFullScreen");
fullscreentState.style.height = docElm.clientHeight + ‘px’;
document.addEventListener(‘fullscreenchange’,function(){
    fullscreentState.innerHTML = (document.fullscreen) ? "全屏显示" : "非全屏显示";
},false);
document.addEventListener(‘mozfullscreenchange’,function(){
    fullscreentState.innerHTML = (document.mozFullscreen) ? "全屏显示" : "非全屏显示";
},false);
document.addEventListener(‘webkitfullscreenchange’,function(){
    fullscreentState.innerHTML = (document.webkitFullscreen) ? "全屏显示" : "非全屏显示";
},false);
function toggleFullScreen() {
    if(btnFullScreen.value == ‘页面全屏显示’) {
        btnFullScreen.value = ‘页面非全屏显示’;
        if(docElm.requestFullscreen) {
            docElm.requestFullscreen();
        }else if(docElm.mozRequestFullScreen) {
            docElm.mozRequestFullScreen();
        }else if(docElm.webkitRequestFullScreen) {
            docElm.webkitRequestFullScreen();
        }
    }else {
        if(document.exitFullscreen) {
            document.exitFullscreen();
        }else if(document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        }else if(document.webkitCancelFullScreen) {
            document.webkitCancelFullScreen();
        }
        btnFullScreen.value = "页面全屏显示";
    }
}

赞 收藏
评论

图片 1

var

HTML5全屏(Fullscreen)API详细介绍,html5fullscreen

那篇小说首要介绍了HTML5全屏(Fullscreen)API详细介绍,本文给出了运营全屏情势和退出全屏情势代码示例,同期讲解了Fullscreen
属性与事件,要求的对象能够参照下

在进一层真实的web应用程序中,JavaScript也变得更为给力.

FullScreen API 是一个新的JavaScript API,轻便而又强盛. FullScreen
让我们得以由此编制程序的措施来向客商须求全屏展现,假如交互达成,任何时候能够脱离全屏状态.

在线演示德姆o:  Fullscreen API Example

(在此德姆o中,可以Launch ,Hide
,以至Dump显示相关属性,可以经过chrome的调整台查看日志音信.)

起步全屏情势

全屏API
requestFullscreen方法在一些老的浏览器里面依旧接纳带前缀形式的法子名,因而大概须要开展检查实验推断:
(带前缀,意思正是逐生机勃勃浏览器内核不通用.)

代码如下:
// 找到帮助的格局, 使用须求全屏的 element 调用
function launchFullScreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}

// 在帮忙全屏的浏览器中运营全屏
// 整个页面
launchFullScreen(document.documentElement);
// 有个别成分
launchFullScreen(document.getElementById(“videoElement”));

将急需全屏突显的DOM成分作为参数,调用此办法就可以让window走入全屏状态,不常候恐怕供给客商同意(浏览器本身和客商人机联作),借使顾客拒却,则可能出现各个不完全的全屏.

要是客户同意步入全屏,那么工具栏以至其余浏览器组件会蒙蔽起来,使document框架的宽度和可观横跨全数显示器.

脱离全屏方式

接收 exitFullscreen 方法可以使浏览器退出全屏,重回原先的布局.
该办法在有些老的浏览器上也是永葆前缀方法.

代码如下:
// 退出 fullscreen
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozExitFullScreen) {
document.mozExitFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}

// 调用退出全屏方法!
exitFullscreen();

请留意: exitFullscreen 只好通过 document 对象调用 —— 实际不是行使普通的
DOM element.

Fullscreen 属性与事件

几个坏新闻,到近期甘休,全屏事件和艺术仍为带前缀的,好消息正是快速主流浏览器就能都协助。

1.document.fullscreenElement:  当前居于全屏状态的因素 element.
2.document.fullscreenEnabled:  标志 fullscreen 当前是不是可用.

当步向/退出 全屏格局时,会触发 fullscreenchange 事件:

代码如下:
var fullscreenElement =
document.fullscreenEnabled
|| document.mozFullscreenElement
|| document.webkitFullscreenElement;
var fullscreenEnabled =
document.fullscreenEnabled
|| document.mozFullscreenEnabled
|| document.webkitFullscreenEnabled;

在起头化全屏方法时,能够探测供给监听哪二个事件.

Fullscreen CSS

浏览器提供了部分有效的 fullscreen CSS 调节法则:

代码如下:
/* html */
:-webkit-full-screen {
/* properties */
}
:-moz-fullscreen {
/* properties */
}

:fullscreen {
/* properties */
}

/* deeper elements */
:-webkit-full-screen video {
width: 100%;
height: 100%;
}

/* styling the backdrop */
::backdrop {
/* properties */
}

在某个情状下,WebKit殊要求要一些优越管理,所以在拍卖多媒体时,你大概要求地点的代码。

自己以为 Fullscreen API 顶级轻巧,一级有用. 作者第一次看见这几个 API 是在一个名为MDN’s BananaBread demo 的全客商端第一位称STG游戏,
那真是一个选拔全屏方式的绝佳案例。

全屏API提供了进去和抽离全屏形式的办法,并提供相应的事件来监测全屏状态的改观,所以各地方都连贯起来了.

请记住那一个很好的API吧 —— 在今后的某部时刻,它自然会派上用途!

那篇文章重要介绍了HTML5全屏(Fullscreen)API详细介绍,本文给出了运营全屏情势和分离全屏形式代码…

 battery.charging);

function(e)

function(stream){

 since some browsers only offer vendor-prefixed support

 {

 

 

 

 errBack);

href=””

  hidden

launchFullScreen(document.getElementById(“videoElement”));

  }

 

function(e)

 

 {

API,来增派开采者构建优秀的桌面和平运动动应用程序。本文将介绍5个新型的API,希望对您的开支专门的学业…

 

 

 

  state

canvas = document.getElementById(“canvas”),

 = canvas.getContext(“2d”),

hidden, state, visibilityChange; 

}

  该API允许开荒者以编程格局将Web应用程序全屏运营,使Web应用程序更像本地应用程序。

 

 

 

 

 设置事件监听器

 设置隐藏属性和可以看到改造事件的称号,属性必要加浏览器前缀

else

  

//

  5.  Link Prefetching

 

 {

rel=”prefetch”

 level: “,

 {

/>

    navigator.getUserMedia(videoObj,

 = function(error)

 

 

 

 

  hidden

 

false);

 = “webkitvisibilitychange”;

//

      video.src

 

function

else

(typeof

else

 

launchFullScreen(document.documentElement);

  //

    navigator.webkitGetUserMedia(videoObj,

true

  }

 charging: “,

 

 

      video.play();

 

 

 { //

 = “visibilitychange”;

 full page –>

    element.requestFullScreen();

 Standard

 

  

 {

document.webkitHidden !== “undefined”)

else

 

 

  if(navigator.getUserMedia)

      video.play();

console.warn(“Battery

  state

 

 

 

<!–

(typeof

 

 

 

  visibilityChange

    video

 

 0.58

    element.webkitRequestFullScreen();

  visibilityChange

 电瓶品质

href=”

 

document.msHidden !== “undefined”)

  

false);

 

 = document.getElementById(“video”),

  visibilityChange

 

 

launchFullScreen(element) {

 {

 

else

  

 WebKit-prefixed

 

  state

  教程 / 演示

 {

 = “webkitVisibilityState”;

//

 

 {

 

 

  那是四个指向性移动装备应用程序的API,首要用于检查测量试验设施电瓶音信。

 {

console.warn(“Battery

//

  state

//

 

 = “visibilityState”;

 

  var

 找到相符浏览器的全屏方法

rel=”prefetch”

false);

  hidden

}

 

//

 

else

if 

 

 = “msvisibilitychange”;

 

HTML5提供了部分老大有力的JavaScript和HTML
API,来提携开辟者创设优秀的桌面和移动应用程序。本文将介绍5个流行的API,希望对您的支出工作有所扶植。

 

 

<link

 

 开首或终止状态处理

  hidden

document.mozHidden !== “undefined”)

  该API能够用来检查评定页面前遭遇于顾客的可以见到性,即重返客商日前浏览的页面或标签的气象变化。

},

battery.addEventListener(“chargingchange”,

 

    },

 

 

 

 true

 = “mozHidden”;

 = “hidden”;

    element.mozRequestFullScreen();

 charge change: “,

},

    };

 

if 

 

 = “msHidden”;

 

 

battery = navigator.battery || navigator.webkitBattery ||
navigator.mozBattery;

 = “mozvisibilitychange”;

 

if

 

 

 

(typeof

  

 = “webkitHidden”;

 

 the whole page

 运维全屏方式

 设置video监听器

 

}

//

 capture error: “,

    },

 获取成分

if(element.mozRequestFullScreen)

 

 

  教程 / 演示

 

document.hidden !== “undefined”)

//

 

    errBack

<!–

 加多二个标题改动的监听器

  if(element.requestFullScreen)

 

  console.warn(“Battery

 = “msVisibilityState”;

 

var

}

  

 {

 

 

 

 

  }

    videoObj

},

 = { “video”:

 battery.level); //

  3.  getUserMedia API

 

 

 

document.addEventListener(visibilityChange,

 

 just an image –>

if(navigator.webkitGetUserMedia)

  }

function(stream)

 

 

<link

 

 any individual element

console.warn(“Battery

 battery.charging); //

 

 

 

/>

 

  教程

}

 { //

 

(typeof

 

 {

window.addEventListener(“DOMContentLoaded”,

 

 

if(element.webkitRequestFullScreen)

  }

  该API允许Web应用程序访谈摄像头和迈克风,而没有必要使用插件。

 = stream;

 

function()

  4.  电池API(Battery API)

 

  visibilityChange

 battery.dischargingTime);

 

 

  //

 

 error.code); 

//

 

 

      console.log(“Video

 

 

},

 增多事变监听器

 

 

 discharging time: “,

 

  预加载网页内容,为浏览者提供贰个平整的浏览体验。

 {

  //

 

    context

 

 

 

 

 

 

  教程 / 演示

 = window.webkitURL.createObjectURL(stream);

  1.  全屏API(Fullscreen API)

 = “mozVisibilityState”;

 

if 

      video.src

 

//

 

 

 errBack);

  2.  页面可以见到性API(Page Visibility API卡塔尔

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注