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

值得开发者关注的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

2013中国大数据技术大会讲师议题正式发布 “2013中国大数据周”即将开幕 正式发布中国大数据现状白皮书 搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源 传闻微软将收购AOL旗下的Winamp和Shoutcast 【BDTC讲师】大数据时代“掘金机”:百度、360、一淘搜索技术分享 谷歌董事长:审查,将会在十年内消失 50万奖金+天使投资:创维天赐家庭互联网创新大赛开幕 专利案苹果获胜:获赔2.9亿美元 三星不服将继续上诉 Google正打造Spark:一个基于Chrome App的集成开发环境 研发周报:成为一名PHP专家其实并不难 将Vistual Studio打造成为Node.js IDE 度量Web性能的关键指标 路由器未火够!高通发布互联网处理器 Unite2014大会:移动开发者的饕餮盛宴 玩与学并存 Kano kit让你自制Raspberry Pi电脑 【BDTC讲师】Hortonworks Gunther&amp;amp;Ted:HBase、Stinger的发展与实践 人人网推出开放平台2.0 多项重大改进吸引开发者回流 红帽高管:将Linux价值理念和做法延伸到OpenStack Fundation 5发布:号称最快版本,响应式用户体验更完善 程序员远程工作必会编程语言JavaScript 苹果确认收购3D传感技术公司PrimeSense 从电影《饥饿游戏》里学到的IT知识 细数IE11的七大变化 2013中国大数据技术大会,你不可错过的10个理由 Unity 2D全球发布,开发者梦想照进现实 Kraken:改变PayPal开发文化的Node.js框架 微软高管:我们将不会再有三个Windows平台 中兴明年推智能手表 暂只能与自家手机搭配使用 移动开发必备!15款jQuery Mobile插件 Chrome新变化:在地址栏里增加搜索按钮 电信行业大数据实践走进大数据大赛:电信网络寻呼黑洞分析 怎样给连接都加密? 如何制作CHM文档?…… 怎样使窗口上的按纽,数据窗口 随着窗口的resizable,位置也相应的变化 我想问一下,要实现彩信和无线网,需具备什么条件?网关?开发平台等? 教教我这菜鸟,在delphi下用什么函数来操作(读取、写进数值)某内存地址? 存储过程中可以自定义变量吗>>> 开始学delphi做聪明的程序员,先给大家散点分,祝大家新年快乐!请斑竹手下留情 触发器如何在程序中使用,它能和存储过程一起用吗> 除了面板上的控件之外,其他一些VC自带的控件在哪里? 谁能把本期的变成擂台题目概要贴一下? 小的是菜鸟,想问一个查询问题 在平面上如何实现三维坐标的模拟定位?(在线急等) 在VB中怎样压缩磁盘中的文件或文件夹 如何在平面上实现三维坐标的模拟?(在线急等) 请问各位高手《Delphi 6程序设计从入门到精通》里的例子代码谁有? 在平面坐标里如何实现三维坐标的模拟定位(在线急等) 怎样实现这个简单的功能? “将事件写入日志”选项不能改动了?奇怪 如何在平面上实现三维坐标的模拟?(在线急等) 如何比较两个字符串 NCNE--国家网络技术水平考试介绍 在问个简单的问题:Delphi中引号的问题 怎样知道windows的应用程序的路经 哪位高手给俺讲讲with xx as xx do 的用法,谢谢! 很菜的问题 请前辈进,请高手进!!! 那位仁兄有JAVA开发的五子棋游戏,我用一套软件交换 怎样用com技术C/S三层做中间件和使用,谈一点原理和实例。 高手请进 100分!!!!!!!!!!! NCNE 国家网络技术水平考试 介绍 软键盘的问题?UP有分 关于装配件的问题 想购买一套人事管理系统的源代码!!!!!!!!!!!!!!!!!!!!!!! 对话框中标题栏上面的颜色如何改? 对服务器来说,内存更重要还是运算更重要? 关于jdk与windows xp 我举报:信息产业部的领导根本没有学习好“三个代表” 聘驱动开发人员!!! 本人在运行REALPLAY8.0的时候出现了这样的错误窗口. 普通常量与符号常量有何区别,怎样使用? 怯怯地问: 问题一:我的网页是用表格分的区域,把表格线设为0 ,但加了背景后 ,背景上总是有一小条白线 ,那是表格的边框线 , 问怎么办? 这个不是太难,但很不简单! 报错---[Linker Fatal Error]Fatal:Expected a file name:,什么原因?大虾指教,在线等待 远程调用时传输数据的问题! 2000 不能正常关机 初当网管,请教大家都用什么工具? IIs重新启动一个web服务出现死机,怎么回事? 问题二 :我做了个POP窗口 ,我想在POP窗口打开时是固定大小的 ,不能调整, 该怎么弄? 希望有一个网络安全的开发专版 关于中国万网的域名解析问题。急救! 女星总是走光为哪般 女星走光高清图集《大明猩》首映徐娇与少女时代林允儿同女星陶虹穿裙跪地与孩子互动不慎走光露甄嬛主题曲歌手姚贝娜上“好声音” 四红色旋风再度来袭 好声音第二季本周五“好人专业户”丁子峻:我要替“赵构”《好声音》第一季学员现状 黄勇处于失赵薇身材臃肿双下巴 感叹昔日四小花旦白百何范玮琪双双走光 两闺蜜默契十足华少新单助阵《好声音》第二季 身兼数“好声音”权振东发首张专辑 刘欢携学好声音开播在即 “中国好舌头”速度已43岁光良20年前对比照毫无差异 网白血病患者健康教育讲座 “一路爱相伴吉克隽逸现身捞金 与男子热聊忘形走光好声音现场气氛热烈 张惠妹尽显大女《新洛神》女主角李依晓被爆整容五次第二季《中国好声音》上海开录 那英”《中国好声音》王者归来 金少刚音响团印度“迷你妹” 20岁姑娘 5岁童颜金曲奖蔡依林造型堪称雷母 回顾过去金台江县驻村工作组协调800多万元建设江口县“两节”期间为军烈属送温暖当文化遗产与城市建设相遇时毛泽东曾为编《湘江评论》暑天写稿 被学习贯彻三中全会精神从“爬坡过坎”到跨越发展“一减一增”看变化恒大这一年:亚冠中超双冠王 战拜仁失人民币市场汇价(12月23日)2014年中欧经贸关系看点多 《中欧外媒:张成泽数百名亲属被送往政治犯劳俄前首富称无心与普京权斗 放弃争夺原外媒:中国重启IPO是把“双刃剑”英刊:中国舰载机基地建设凸显航母雄心美媒述评《爸爸去哪儿》热播引民众反思美媒:美“对华团队”空当难弥补泰反对派再组织十万人抗议民主党抵制大工业固定资产投资提前完成全年目标任务记者暗访快递公司:快递验视制度成一纸呼和浩特殡仪馆“一减一增”看变化
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘