[转载]你可能不知道的5个功能强大的 HTML5 API —— html5系列

HTML5 新增了许多重要的特性,像 video、audio 和 canvas 等等,这些特性使得能够很容易的网页中包含多媒体内容,而不需要任何的插件或者 API。而其它的新元素,例如 section、article、header 和 nav 等则是用来丰富网页内容。另外还有很多强大的 JavaScript API,下面这5个 HTML5 API 你可能不知道,通过今天这篇文章可以了解一下。

Fullscreen API

  这个 HTML5 全屏 API 让 Web 开发者可以通过编程控制页面的全屏显示。这个 API 对于 JavaScript 游戏开发特别有用,例如这款单人射击游戏 BananaBread,在全屏状态下玩那是相当酷。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

// 根据目标元素调用相应的方法

function launchFullScreen(element) {

  if(element.requestFullScreen) {

    element.requestFullScreen();

  else if(element.mozRequestFullScreen) {

    element.mozRequestFullScreen();

  else if(element.webkitRequestFullScreen) {

    element.webkitRequestFullScreen();

  }

}

// 在支持的浏览器中启动全屏

launchFullScreen(document.documentElement); // 整个页面

launchFullScreen(document.getElementById("videoElement")); // 单个元素

  使用教程   在线演示

Page Visibility API

  Page Visibility API 可以帮助开发者监听用户的焦点在哪个页面选项卡上面以及用户在选项库或者窗口之间的移动情况。如果使用合理的话,当焦点不在某个页面上的时候可以停止一些消耗很大的任务。


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

// 部分浏览器只支持 vendor-prefixed

// 根据浏览器支持情况设置隐藏属性和可见状态改变事件

var hidden, state, visibilityChange;

if (typeof document.hidden !== "undefined") {

  hidden = "hidden";

  visibilityChange = "visibilitychange";

  state = "visibilityState";

else if (typeof document.mozHidden !== "undefined") {

  hidden = "mozHidden";

  visibilityChange = "mozvisibilitychange";

  state = "mozVisibilityState";

else if (typeof document.msHidden !== "undefined") {

  hidden = "msHidden";

  visibilityChange = "msvisibilitychange";

  state = "msVisibilityState";

else if (typeof document.webkitHidden !== "undefined") {

  hidden = "webkitHidden";

  visibilityChange = "webkitvisibilitychange";

  state = "webkitVisibilityState";

}

// 添加一个时间来实时改变页面的标题

document.addEventListener(visibilityChange, function(e) {

  // Start or stop processing depending on state

}, false);

  使用教程   在线演示

getUserMedia API

  特别有趣的一个 API,能够调用电脑的摄像头,结合 <video> 标签和 Canvas 就能在浏览器中拍摄照片了。未来这个 API 将被广泛用来让浏览器和用户之间互动。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

// 添加事件监听器

window.addEventListener("DOMContentLoaded"function() {

  // 获取元素,创建配置

  var canvas = document.getElementById("canvas"),

    context = canvas.getContext("2d"),

    video = document.getElementById("video"),

    videoObj = { "video"true },

    errBack = function(error) {

      console.log("Video capture error: ", error.code);

    };

  // 添加视频监听器

  if(navigator.getUserMedia) { // 标准的API

    navigator.getUserMedia(videoObj, function(stream) {

      video.src = stream;

      video.play();

    }, errBack);

  else if(navigator.webkitGetUserMedia) { // WebKit 核心的API

    navigator.webkitGetUserMedia(videoObj, function(stream){

      video.src = window.webkitURL.createObjectURL(stream);

      video.play();

    }, errBack);

  }

}, false);

  使用教程   在线演示

Battery API

  顾名思义,这是一个电池 API ,明显是为移动设备准备的,用于监控电池的状态。能够通过事件监听电池电量的变化,电池的等级、可用时间等状态。下面是是示例代码,可以通过后面的教程链接学习更详细的使用方法。


1

2

3

4

5

6

7

8

9

10

11

12

// 获取电池对象

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

// 一组非常有用的电池属性

console.warn("Battery charging: ", battery.charging); // true

console.warn("Battery level: ", battery.level); // 0.58

console.warn("Battery discharging time: ", battery.dischargingTime);

// 监听电池状态

battery.addEventListener("chargingchange"function(e) {

  console.warn("Battery charge change: ", battery.charging);

}, false);

  使用教程

Link Prefetching

  这个链接预取 API 非常有用,让开发者可以控制网页资源在后台安静的预先加载,这样用户在浏览网站或者使用 Web 应用程序的时候能够有流畅的使用体验。可以预加载整个页面,也可以是单个资源,示例代码如下:


1

2

3

4

5

<!-- 预加载整个页面 -->

<link rel="prefetch" href="http://davidwalsh.name/css-enhancements-user-experience" />

 

<!-- 预加载一张图片 -->

<link rel="prefetch" href="http://davidwalsh.name/wp-content/themes/walshbook3/images/sprite.png" />

  使用教程

  上面这5个 HTML5 API 值得关注,在不久的将来这些 API 将被广泛的使用,因此越早掌握它们可以帮助你为构建优秀的 Web 应用打下坚实的基础。通过使用教程可以快速的熟悉这些 API 的基本用法和使用场景,提供的在线演示展示了直观的应用情况。

您可能还喜欢

时间: 2024-09-30 15:48:43

[转载]你可能不知道的5个功能强大的 HTML5 API —— html5系列的相关文章

你可能不知道的5个功能强大的 HTML5 API

HTML5 新增了许多重要的特性,像 video.audio 和 canvas 等等,这些特性使得能够很容易的网页中包含多媒体内容,而不需要任何的插件或者 API.而其它的新元素,例如 section.article.header 和 nav 等则是用来丰富网页内容.另外还有很多强大的 JavaScript API,下面这5个 HTML5 API 你可能不知道,通过今天这篇文章可以了解一下. Fullscreen API 这个 HTML5 全屏 API 让 Web 开发者可以通过编程控制页面的全

[转载]你可能不知道的 30 个 Python 语言的特点技巧

[转载地址:http://www.oschina.net/translate/thirty-python-language-features-and-tricks-you-may-not-know] 从我开始学习Python时我就决定维护一个经常使用的“窍门”列表.不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等),我会尝试它直到理解它,然后把它添加到列表中.这篇文章是清理过列表的一部分.如果你是一个有经验的Python程序

【转载】不得不知道的Python字符串编码相关的知识

原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII character 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128),又例如显示乱码.由于之前不知道编码的原理,遇到这些情况,就只能不断的用各种编码decode和encode.....今天整理一个pyt

Android中Context详解 ---- 你所不知道的Context (转载)

Android中Context详解 ---- 你所不知道的Context (转载) http://blog.csdn.net/qinjuning 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context的原理.类结构关系.一个简单的问题是,一个应用

你所不知道的html5与html中的那些事(二)

文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5的父亲html的一些

你所不知道的html5与html中的那些事(一)

分类: Web开发 文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作都可以达到真正的云方式呢?这一系列的问题你是否已经想明白了呢? 本系列文章将为您一一解答你所不知道的关于html5与html中的那些事;具体会包括如:html5新的理念与想法,html5的新标签的用意与具体开发中场景应用,html5与css3的感情经历(用法搭配),包括html5

Android中Context详解 ---- 你所不知道的Context

转载至 :http://blog.csdn.net/qinjuning 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context

ES6 你可能不知道的事 – 基础篇

ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES2015(2015 年 6 月正式发布),对于大多数前端同学都不陌生. 首先这篇文章不是工具书,不会去过多谈概念,而是想聊聊关于每个特性 你可能不知道的事,希望能为各位同学 正确使用 ES6,提供一些指导. 对于 ES6,有些同学已经在项目中有过深入使用了,有些则刚刚开始认识他,但不论你是属于哪一类

手机元件你可能不知道的那些事

据消息人士透露,富士康正玩命扩招100,000人力以满足iPhone6的量产需求,与此同时,iPhone6的公关团队又弄丢了工程样机.事实上,这个团队每年都会在iPhone上市前,或在酒吧,或在公园.或在写字楼弄丢一部宝贵的真机.从网络上流传的谍照来看,新一代iPhone势必要拉个大长脸,display尺寸有两个版本,一个是4.7英寸,一个是5.5英寸,严重违反了由果粉提出的"3.5英寸屏幕才是最好看手机"的黄金标准:后置camera由800万像素提升到1000万像素,前置VGA也有2