说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

值得开发者关注的8个HTML5 API

HTML文档下载 WORD文档下载 PDF文档下载
HTML5革命给Web开发者们带来许多超棒的JavaScript和HTML API,有些API已逐渐成为他们的好帮手。本文为大家总结了8个非常实用的HTML5 API。

之前,我们曾发布过 你应该知道的HTML5五大特性。下面,再向大家介绍一些非常实用的HTML5 JavaScript API。话说,JavaScript+CSS+HTML一直都是前端开发者的秘密武器,开发者利用它们可以开发出任何想要的东西,比如使用JavaScript访问硬件(摄像头、麦克风、游戏手柄、GPU)、访问文件系统和WebSocket。

1.Battery Status API

电池状态API,顾名思义,该API的主要用途是检查设备(笔记本电脑、手机、平板电脑)的电池状态。

var battery = navigator.battery || navigator.webkitBattery || navigator.mozBatteryconsole.log("Battery charging: ", battery.charging); // trueconsole.log("Battery level: ", battery.level); // 0.58console.log("Battery discharging time: ", battery.dischargingTime);
在经过一番研究后,向大家推荐battery.js库,专门用来检查设备的电池状态。

if(Battery.isSupported()) {    // Get the battery status    var status = Battery.getStatus();    console.log('Level: ' + Math.floor(status.level * 100) + '%'); // 30%    console.log('Charging: ' + status.charging);                   // true    console.log('Time until charged: ' + status.chargingTime);     // 3600 (seconds) or Infinity    console.log('Battery time left: ' + status.dischargingTime);   // 3600 (seconds) or Infinity    // Register a handler to get notified when battery status changes    Battery.onUpdate = function(status) {        console.log(status); // {level, charging, chargingTime, dischargingTime}    };}

浏览器兼容情况(数字表示最低版本号,减号表示不兼容):


2.Gamepad API

游戏手柄API,该API允许你连接计算机和游戏控制台,使用它来玩网页游戏。

navigator.gamepads = navigator.webkitGamepads || navigator.MozGamepads;var requestAnimationFrame = window.webkitRequestAnimationFrame ||                            window.mozRequestAnimationFrame;var cancelAnimationFrame = window.webkitCancelAnimationFrame ||                           window.MozCancelAnimationFrame;var controllers = {}; // Stash connected controllers.var reqId = null;function onConnected(e) {    controllers[e.gamepad.index] = e.gamepad;    runAnimation();}function onDisconnected(e) {    delete controllers[e.gamepad.index];    cancelAnimationFrame(reqId);}window.addEventListener('webkitgamepadconnected', onConnected, false);window.addEventListener('webkitgamepaddisconnected', onDisconnected, false);window.addEventListener('MozGamepadDisconnected', onDisconnected, false);window.addEventListener('MozGamepadConnected', onConnected, false);
以上代码源码,顺便向大家推荐gamepadjs这个库,它可以让你更方便地使用该库。

浏览器兼容情况:


3.Device Orientation API

设备定位API,该API允许你收集设备的方向和移动信息。此外,该API只在具备陀螺仪功能的设备上使用。


if (window.DeviceOrientationEvent) {    window.addEventListener('deviceorientation', function(event) {        var a = event.alpha,            b = event.beta,            g = event.gamma;        console.log('Orientation - Alpha: ' + a + ', Beta: '+ b + ', Gamma: ' + g);    }, false);} else {    console.log('This device does not support deviceorientation');}
浏览器兼容情况:


4.Geolocation API

地理定位API,开发者使用该API可以请求用户的位置信息,在网页上分享自己的位置信息等。位置信息由纬度、经度坐标和一些其他元数据组成。

if (navigator.geolocation) {    navigator.geolocation.getCurrentPosition(function(position) {        var lat = position.coords.latitude,            lon = position.coords.longitude;        console.log('Geolocation - Latitude: '+ lat +', Longitude: '+ lon);    });}else {    console.log('Geolocation is not supported for this Browser/OS version yet.');}
浏览器兼容情况:


5.Page Visibility API

页面可见度API,该API向开发者提供了一个监听事件,可以告诉开发者当前用户浏览页面或标签的状态变化。

document.addEventListener('visibilitychange', function(e) {    console.log('hidden:' + document.hidden,              'state:' + document.visibilityState)}, false);
浏览器兼容情况:

6.Fullscreen API

全屏API,该API可以让开发人员进入到浏览器的全屏模式,用户在使用的时候可以随意启动和取消该模式。这个API特别适合游戏开发者:

// Find the right method, call on correct element  function launchFullScreen(element) {    if(element.requestFullScreen) {      element.requestFullScreen();    } else if(element.mozRequestFullScreen) {      element.mozRequestFullScreen();    } else if(element.webkitRequestFullScreen) {      element.webkitRequestFullScreen();    }  }  // Launch fullscreen for browsers that support it!  launchFullScreen(document.documentElement); // the whole page  launchFullScreen(document.getElementById("videoElement")); // any individual ele
点击查看教程和示例。

7.getUserMedia API

这是个非常有趣的API,开发者使用该API可以访问多媒体设备,无需插件,比如笔记本的摄像头(要有用户权限)。与<video>和canvas元素一起使用,还可以在浏览器里面捕获许多漂亮的图片。

// Put event listeners into place  window.addEventListener("DOMContentLoaded", function() {    // Grab elements, create settings, etc.    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);       };     // Put video listeners into place    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); 
点击查看教程与示例。

8.Link Prefetching

链接预取API,该API提供页面预览功能,方便开发者改善用户体验。

<!-- full page --> <link rel="prefetch" href="http://davidwalsh.name/css-enhancements-user-experience" /> <!-- just an image --> <link rel="prefetch" href="http://davidwalsh.name/wp-content/themes/walshbook3/images/sprite.png" /> 
点击阅读教程。

英文来自:daker.me

Win32 行程通讯的观念与技术-Delphi资料 编程发送E-mail-Delphi资料 调用那个函数得到本机的IP-Delphi资料 动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 任何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 如何在程序中动态取得Win98的网络邻居中的工作组及计算机名-Delphi资料 动态设置DNS地址-Delphi资料 读取IE收藏夹内网址的信息-Delphi资料 改网络计算机名-Delphi资料 关于WEB应用程序的打印组件开发初探-Delphi资料 基于TELNET协议的DELPHI程序与LINUX主机通信的实现 监视POP3信箱-Delphi资料 开发WEBMAIL程序-Delphi资料 开发响应用户输入的数据库web Server-Delphi资料 利用Delphi编程发送E-mail 利用Delphi编写Socket通信程序 利用Delphi开发网络数据库应用 在许多系统中,出于安全或其它原因,常常要求随时对键盘进行监控,一个专-Delphi资料 链接的视觉效果-Delphi资料 如何从域名名得到IP?-Delphi资料 如何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 如何获取CapsLock 、 Insert 等键的状态?-Delphi资料 如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名?-Delphi资料 提高客户机/服务器应用系统性能的一些方法-Delphi资料 网络和通讯编程-Delphi资料 WebBrowser流程讲解及如何判断下载网页成功-Delphi资料 用Delphi 3.0实现运行于浏览器内的客户 用Delphi编写ASP的ActiveX 用Delphi编写CGI程序(五) 用Delphi编写CGI程序返回图象 用Delphi程序获取拨号连接的动态IP地址 win2k中tts问题 XML+XSL+HTML运行出错(书上的例子) 倒粪2 高手帮我看一下这个奇怪的问题 倒粪3 ServerSocket的疑问 倒粪4 电脑配件 请问如何在JBuilder中调用我自己编写的JavaBean? 文件1可以Imports文件2的Namespace么? 我需要一个汉字的字库和词库,请问在什么地方能够得到?或者怎么可以从一个输入法程序中导出词库或词库?多谢。 调查:有多少人用的支持Java的手机? 关于注册表重命名操作? redhat的lilo问题 急!!!!!!计算机启动后,能检测到新的硬件并安装驱动,之后出现错误按任一键继续按三键重启任一键后,屏幕上一无所有,出现蓝屏,多次启动依然 常用工具栏不见了?怎么加上啊? 哪里有windows2000的资源工具包下载? win2000启动问题!!! 请问如何取得客户端(浏览网页的用户)的ip地址????????????? 学过数据结构的不妨来看一看! 好心人,进来看看!小弟我也快沉了,帮帮忙,谢谢了! 如何实现计算器的屏幕从右端开始显示? 交叉表FILTER 关注Tcl/Tk语言的朋友请进 df 遇到麻烦——通过winio取bios密码的程序 关于图片显示 今年再考一次。 SQL语句中[]的问题 请教一个关于派生新视图类的小问题 Delphi7适合编程盲学使用吗? 我想用Linux+mySql+jave做一套专用系统,越小越好大家给点建议 那个斑竹干的? 一个奇怪的写入数据库问题 文本框如何能对齐?(在线等,着急!!!!!) 请问:为什么我点击一个.asp的链接就会弹出一个保存*.asp的对话框? 小弟做了一套动态域名系统,类似www.3322.org这样子的.... 处程好考吗? 从百赛诺看国内的乙肝药物研究 求office2000的安装sn!!!谢谢 如何再MDI工程中动态创建窗体? update from 请问,这个方法得到的是什么单位GetColBestWidth 关于基础类版发展的几点意见 日益猖獗的的学术腐败!! 程序员的日子该怎么过? 请教:JAVA中定义浮点类型时F的作用 在线问题(答完马上给分) BREW算不算手机操作系统 100分请问:128M内存读成64M的原因和解决办法 Rational Rose 2002: Data Modeler/Transform to data Model 山芋能多吃吗 吃番薯怎么那么多屁放 为何冬天户外刮风是空气流动成风 但为什么又大又呢 春天就不这样 我在海边拾到一块石头但是我不知道是什么石头?特征:深绿色,透明,光滑,断裂处有光泽 进高中自我介绍怎么写 吾儿,久不见若影,何竞日默默在此,大类女郎也? 什么是Bank_Loan_And_Deposit_Ratio? 不见猿影只见猿声是什么意思? 阅读并回答问题苦夏这一日,终于撂下扇子.来自天上干燥清爽的风,忽吹得我衣袂飞举,并从袖口和裤管钻进来,把周身溜溜地抚动.我惊讶地看着阳光下依旧夺目的风景,不明白数日前那个酷烈非 阅读并回答A woman saw three old men sitting in her front yard.She said,“I don’t think I know you,but you must be hungry.Please come in and have something to eat”.“We don’t go into a house together,” they replied.“Why is that?” sh 阅读并回答天净沙*秋思 本文主人公是( ),这里指( )的人.为了很好地烘托主人公的心境,作者特地选取了____,____,____,____这些景物组合成一副画面,营造出悲凉的晚秋气氛.这首小令的内容反映了( 西湖五处码头装避雷针 外包仿真藤色调失踪小驴友的尸体终于找到 距发现头骨国企携大单与民企对接 诚意足够但难消秋风阵阵喷嚏连天 不是感冒是过敏钓鱼岛史上从未属日本2000万港元赔款大多来自华人捐助印火星探测器欲争亚洲第一老虎VS小麦,谁是王中王?“娜”功败垂成总理被窃听伤了德国人的心一起来做“土豪”吧!歪曲苏联二战角色 违法绿茶兑威士忌原来是Paco“发明”的个性化产品让游客品读海南重点项目建设的赞与弹江海申请省产业转移工业园变种人超能力惊人客队依旧凶猛海南鲜花精油妙用多多推广冰鲜鸡 先释市民疑虑小天鹅智能洗衣机大型巡展全国启动诱鼠不成 雀仔自投罗网
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘