你可能不知道的5个功能强大的 HTML5 API
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 应用程序的时候能够有流畅的使用体验。可以预加载整个页面,也可以是单个资源,示例代码如下:
<!-- 预加载整个页面 -->
<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 的基本用法和使用场景,提供的在线演示展示了直观的应用情况。
你可能不知道的5个功能强大的 HTML5 API的更多相关文章
- 推荐一个高效,易用功能强大的可视化API管理平台
项目管理 提供基本的项目分组,项目管理,接口管理功能 接口管理 友好的接口文档,基于websocket的多人协作接口编辑功能和类postman测试工具,让多人协作成倍提升开发效率 MockServer ...
- 你所不知道的Mac截图的强大
Mac的截图功能扩展功能很强大的,不要用QQ那个COM+Ctrl+A弱爆了的截图了~ 首先说一下两种截图 1.Command+shift+3:全屏截图,保存截图到桌面 2.Command+shift+ ...
- 你可能不知道的5 个强大的HTML5 API 函数
HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1. 全屏API(Fulls ...
- 你可能不知道的pdf的功能
可以创建交互式的pdf,比如在pdf页面添加一个按钮, 添加一个文本框. 上篇文章说了pdf有可移植性,这是个非常重要的特性,我就想能否把3d模型放入到pdf中,这样即使对方电脑没有3d软件也可以查看 ...
- 分享10款功能强大的HTML5/CSS3应用插件
1.纯CSS3美化Checkbox和Radiobox按钮 外观很时尚 利用CSS3我们可以打造非常具有个性化的用户表单,今天我们就利用CSS3美化Checkbox复选框和Radiobox单选框.CSS ...
- 5 个强大的 HTML5 API
HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1. 全屏API(Fulls ...
- 基于HTML5功能强大的滑块幻灯片
分享一款功能强大的HTML5滑块幻灯片.这是一款基于jQuery+HTML5实现的图片切换幻灯片代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <section cla ...
- 你所不知道的setTimeout
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...
- [iOS翻译]《iOS 7 Programming Pushing the Limits》系列:你可能不知道的Objective-C技巧
简介: 如果你阅读这本书,你可能已经牢牢掌握iOS开发的基础,但这里有一些小特点和实践是许多开发者并不熟悉的,甚至有数年经验的开发者也是.在这一章里,你会学到一些很重要的开发技巧,但这仍远远不够,你还 ...
随机推荐
- 什么是滤波器,滤波器是干嘛用的,IIR和FIR滤波器又是什么?(回答请简洁,别浪费大家时间)
信号频率筛选器,用于阻挡不需要的信号: 低通滤波用来阻挡某一频率之上的所有信号: 高通滤波用来阻挡某一频率之下的所有信号: 另外还有带通滤波器,带阻滤波器..... 个人理解,就像是个过滤沙子的筛子一 ...
- [转载]CentOS修改用户最大进程数
FROM: http://www.2cto.com/os/201303/192380.html CentOS修改用户最大进程数 一般在/etc/security/limits.conf 中修改最大 ...
- [转载]How to Install Firefox 33 on CentOS, Redhat and Other Linux Distributions
FROM: http://tecadmin.net/install-firefox-on-linux/ Firefox 33 has been released for Systems and And ...
- 为集群配置Impala和Mapreduce
FROM: http://www.importnew.com/5881.html -- 扫描加关注,微信号: importnew -- 原文链接: Cloudera 翻译: ImportNew.com ...
- JavaScript Best Practices
原文: https://www.w3schools.com/js/js_best_practices.asp --------------------------------------------- ...
- vue笔记二
七.列表渲染 1.示例 <ul id="example-2"> <li v-for="(item, index) in items"> ...
- 每天一个JavaScript实例-展示设置和获取CSS样式设置
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- windows下WMI使用C++查询用户硬件信息
最近需要做下用户信息统计,发现WMI真是个好东西,同时觉得COM这东西,还真不能少>_<!! 下面是源码: /*************************************** ...
- Asp.net MVC 插件式应用框架
Asp.net MVC 插件式应用框架 2013年05月13日 10:16供稿中心: 互联网运营部 摘要:这几年来做了很多个网站系统,一直坚持使用asp.net mvc建站,每次都从头开始做Layou ...
- SQL Server中LIKE和PATINDEX的用法
在SQL Server中,能使用通配符的只有2个:LIKE.PATINDEX. 不过LIKE支持2种通配符转义,无限制最全面:而PATINDEX只支持最简单的通配符转义([]转义),限制较多. LIK ...