HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序。本文将介绍5个新型的API,希望对你的开发工作有所帮助。

  1.  全屏API(Fullscreen API)

  该API允许开发者以编程方式将Web应用程序全屏运行,使Web应用程序更像本地应用程序。

// 找到适合浏览器的全屏方法  

function launchFullScreen(element)   {

  if(element.requestFullScreen)   {

    element.requestFullScreen();  

  } else if(element.mozRequestFullScreen) {

    element.mozRequestFullScreen();

  } else if(element.webkitRequestFullScreen)   {

    element.webkitRequestFullScreen();

  }

}

// 启动全屏模式  

launchFullScreen(document.documentElement);   // the whole page

launchFullScreen(document.getElementById("videoElement"));   // any individual element

  2.  页面可见性API(Page Visibility API)

  该API可以用来检测页面对于用户的可见性,即返回用户当前浏览的页面或标签的状态变化。

// 设置隐藏属性和可见改变事件的名称,属性需要加浏览器前缀   

// since some browsers only offer   vendor-prefixed support 

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) { 

  // 开始或停止状态处理 

}, false);

  3.  getUserMedia API

  该API允许Web应用程序访问摄像头和麦克风,而无需使用插件。

// 设置事件监听器   

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);  

    }; 

  // 设置video监听器 

  if(navigator.getUserMedia) {   // Standard 

    navigator.getUserMedia(videoObj,   function(stream) { 

      video.src   = stream; 

      video.play();   

    }, errBack); 

  } else if(navigator.webkitGetUserMedia)   { // WebKit-prefixed 

    navigator.webkitGetUserMedia(videoObj,   function(stream){ 

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

      video.play();   

    }, errBack); 

  } 

}, false);

  4.  电池API(Battery API)

  这是一个针对移动设备应用程序的API,主要用于检测设备电池信息。

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);

  5.  Link Prefetching

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

  

<!-- full page -->

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

<!-- just an image -->

你可能不知道的5 个强大的HTML5 API 函数的更多相关文章

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

    HTML5 新增了许多重要的特性,像 video.audio 和 canvas 等等,这些特性使得能够很容易的网页中包含多媒体内容,而不需要任何的插件或者 API.而其它的新元素,例如 section ...

  2. [转]你可能不知道的五个强大HTML5 API

    一.全屏 // 找到适合浏览器的全屏方法 function launchFullScreen(element) { if(element.requestFullScreen) { element.re ...

  3. [lua] 你所不知道的lua nil值在可变参数函数中怎么处理!

    在lua中, 问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end    _test(1, nil, ...

  4. 5 个强大的 HTML5 API

    HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1.  全屏API(Fulls ...

  5. 你所不知道的setTimeout

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  6. [iOS翻译]《iOS 7 Programming Pushing the Limits》系列:你可能不知道的Objective-C技巧

    简介: 如果你阅读这本书,你可能已经牢牢掌握iOS开发的基础,但这里有一些小特点和实践是许多开发者并不熟悉的,甚至有数年经验的开发者也是.在这一章里,你会学到一些很重要的开发技巧,但这仍远远不够,你还 ...

  7. 10686 DeathGod不知道的事情

    Description 蚂蚁是很强大的动物,除了DeathGod知道的事情外还有很多不知道的!例如… 根据某种理论,时间方向上有无数个平行世界,有的世界蚂蚁很多,有的世界蚂蚁很少,有的世界蚂蚁会繁殖, ...

  8. 不知道的陷阱:C#委托和事件的困惑

    转载网址:http://www.cnblogs.com/buptzym/archive/2013/03/15/2962300.html 不知道的陷阱:C#委托和事件的困惑   一. 问题引入 通常,一 ...

  9. [转载]或许您还不知道的八款Android开源游戏引擎

    或许您还不知道的八款Android开源游戏引擎         分类:             技术文章              2010-08-04 20:27     17430人阅读     ...

随机推荐

  1. 试水jdk8 stream

    jdk8出来日子不短了,jdk11都出来了,不过用的最多的不过是1.5罢了. 今年终于鼓起勇气认真对待它,在18年记录下学习stream,画上一个圆. 先看个图 Java8中有两大最为重要的改变.第一 ...

  2. 在qemu上运行BusyBox

    BusyBox 前文“在qemu环境中用gdb调试Linux内核”和“Initramfs 原理和实践”分别描述了怎么用qemu来运行一个编译好的内核,以及怎么指定initramfs,但都是简单的演示. ...

  3. .NET Core2.1下采用EFCore比较原生IOC、AspectCore、AutoFac之间的性能

    一.前言 ASP.NET Core本身已经集成了一个轻量级的IOC容器,开发者只需要定义好接口后,在Startup.cs的ConfigureServices方法里使用对应生命周期的绑定方法即可,常见方 ...

  4. Python发送带附件的邮件

    看别人的博客就不要在往别人的邮箱里发东西了行不行, 有点素质可以吗!!! 写出来分享还不知道珍惜!!!!! #-*-encoding:utf-8 -*- import os import smtpli ...

  5. luoguP3359 改造异或树 线段树合并

    删边转化为加边 然后每次用线段树合并就行..... 确确实实很简单 然而为什么线段树合并跑不过$splay$的启发式合并,常数稍大了点... 复杂度$O(n \log n)$ #include < ...

  6. hdu 2110 基础母函数

    题意:退出本身并不麻烦,麻烦的是,退出的人需要取走相应比例(1/3)金额的资产.假设公司此时一共有n种价值的资产,每种价值的资产数量已知,请帮助心烦意乱的XHD夫妇计算一共有多少种分割资产的方法.   ...

  7. 【BZOJ】2730: [HNOI2012]矿场搭建【Tarjan找割点】【分联通块割点个数】

    2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3230  Solved: 1540[Submit][Stat ...

  8. 【洛谷】3953:逛公园【反向最短路】【记忆化搜索(DP)统计方案】

    P3953 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条 ...

  9. 【BZOJ-3527】力 FFT

    3527: [Zjoi2014]力 Time Limit: 30 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1544  Solved: 89 ...

  10. LogStash日志分析系统

    简介 通常日志管理是逐渐崩溃的——当日志对于人们最重要的时候,也就是出现问题的时候,这个渐进的过程就开始了.日志管理一般会经历一下3个阶段: 初级管理员将通过一些传统工具(如cat.tail.sed. ...