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

作者:ca88

HTML第55中学与页面展现相关的API

2015/05/15 · HTML5 · HTML5

原来的著作出处: 涂根华的博客   

在HTML第55中学,增添了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.addEventListener('ended',videoEnded,false); videoElement.addEventListener('play',videoPlay,false); videoElement.add伊夫ntListener('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.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
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

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 的全顾客端首个人称ACT类游戏, 这真是八个行使全屏形式的绝佳案例。

全屏API提供了进去和剥离全屏模式的措施,并提供相应的事件来监测全屏状态的改动,所以各地点都连贯起来了.

请记住这一个很好的API吧 —— 在以往的某部时刻,它自然会派上用场!

那篇作品首要介绍了HTML5全屏(Fullscreen)API详细介绍,本文给出了开发银行全屏情势和退出全屏格局代码...

 battery.charging);

全屏

 WebKit-prefixed

document.addEventListener("mozfullscreenchange", function () {

<!--

document.msExitFullscreen();

 

https://www.cnblogs.com/duanlianjiang/p/5557015.html

 

elem.msRequestFullscreen();

 

6、duration摄像的总时间

 

}
//IE11
else if (elem.msRequestFullscreen) {

 = canvas.getContext("2d"),

2、在Safari 5.第11中学,苹果更新了那个API使它更类似于Mozilla的全屏API草案(实际上那要比苹果完成的更早),以后,全数的DOM成分都能够调用webkitRequestFullScreen()函数使HTML页面踏入到全屏形式。

 {

}
//FireFox
else if (docElm.mozRequestFullScreen) {

API,来支援开采者创设杰出的桌面和移动应用程序。本文将介绍5个流行的API,希望对你的花费职业...

document.mozCancelFullScreen();

document.mozHidden !== "undefined")

fullscreenState.innerHTML = (document.mozFullScreen)? "" : "not ";}, false);

 

docElm.mozRequestFullScreen();

 

脱离全屏

  visibilityChange

else if (document.mozCancelFullScreen) {

 

document.addEventListener("fullscreenchange", function(){

  教程

docElm.requestFullscreen();

 

else if (document.msExitFullscreen) {

 

5、volume调节音量的深浅(赋值0-1)

 = "msVisibilityState";

2、pause()调节录制的终止

else

}

if(element.mozRequestFullScreen)

}
//Chrome等
else if (docElm.webkitRequestFullScreen) {

      video.src

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

 

}

rel="prefetch"

监听是或不是全屏

 

3、Firefox和Chome发布它们将会加上原生的全屏API支持,况且以此特性已经在Chome 15 以至Firefox10 中完毕,Mozilla团队一度公布了一部分。

 

document.addEventListener("webkitfullscreenchange", function () {

hidden, state, visibilityChange; 

document.webkitCancelFullScreen();

 

var docElm = document.documentElement;
//W3C
if(docElm.requestFullscreen){

 battery.level); //

自定义播放器中部分JS中提供的格局和属性的记录:

 

}

 level: ",

代码:

 

document.addEventListener("msfullscreenchange", function () {

window.addEventListener("DOMContentLoaded",

3、currentTime调控录像的日前时刻

 

1、play()调节摄像的播音

 增加风浪监听器

fullscreenState.innerHTML = (document.msFullscreenElement)? "" : "not ";}, false);

},

全屏是的样式设置

 

else if (document.webkitCancelFullScreen) {

      video.play();

docElm.webkitRequestFullScreen();

 

要步入全屏格局,能够调用须要进入全屏成分的requestFullScreen(也许W3C的 requestFullscreen)方法。。要退出全屏,则调用document对象的cancelFullScreen(可能W3C的exitFullscreen)方法。

if 

controls(调节器)、autoplay(自动播放)、loop(循环)==video私下认可的;

 

}

  hidden

fullscreenState.innerHTML = (document.fullscreen)? "" : "not ";}, false);

 

}

 

5、更新 (11/15/2011):来自IEBlog的Ted Johnson说IE10将不会支持全屏API (12/05/二零一三: 作者对特德的首先封email通晓错了)IE10的费用团队还未有调整是还是不是要得以完毕全屏API。然则,他提议:Win8的 Metro风格的Internet Explorer始终是全屏状态,正如从前那么,按F11键就能够步入全屏形式。

  console.warn("Battery

二、全屏API介绍

  2.  页面可以知道性API(Page Visibility API)

浏览器全屏API

  }

fullscreenState.innerHTML = (document.webkitIsFullScreen)? "" : "not ";}, false);

 设置遮盖属性和可以看到退换事件的称号,属性须要加浏览器前缀

浏览器全屏API简史

 

8、requestFullscreen全屏

 full page -->

4、muted调节录制是不是静音(赋值true or false)

<link

1、第一个落到实处浏览器原生全屏API的是在Safari 5.0(和iOS)中拉长的webkitEnterFullScreen()函数,不过它不得不在Safar的<video>标签的controls中。

    errBack

document.exitFullscreen();

battery.addEventListener("chargingchange",

7、ontimeupdate事件(当前播报地点变动时施行,使用时要绑定add伊夫ntListener)

 

  1. Mozilla/Webkit使用大写字母’S'(FullScreen),但W3C则不是(Fullscreen)
  2. Mozilla/Webkit使用cancelFullScreen,W3C使用exitFullscreen

  var

一、video的js知识点:

else

4、在二零一三年11月三日,W3C发表了一份全屏API草案(由Opera团队的一名成员编写),它跟Mozilla的草案有多少个重要的分歧点:

  教程 / 演示

if (document.exitFullscreen) {

}

true

 

 设置video监听器

launchFullScreen(document.documentElement);

function

 

(typeof

 

false);

 

var

//

 

      video.play();

 

  hidden

 

}

  hidden

 true

else

 

本文由ca88发布,转载请注明来源

关键词: ca88网址 yzc66亚洲城 HTML5