H5新增特性
1. video/audio视频/音频
<video> 标签定义视频,比如电影片段或其他视频流。
目前,<video>
元素支持三种视频格式:MP4、WebM、Ogg。
语法:<video src=”” controls autoplay loop></video>
Controls
向用户显示控件,比如播放按钮
Autoplay
自动播放
Loop
循环播放
-
<audio> 标签定义声音,比如音乐或其他音频流。
目前,<audio>
元素支持的3种文件格式:MP3、Wav、Ogg。
语法:<audio src=”” controls autoplay loop></audio>
2. canvas 绘画
canvas
就像一块幕布,然后通过JavaScript
动态地在这个区域中绘制图形;它允许我们绘制直线、圆、矩形等基本形状,以及图像和文字
3. geolocation 定位
用于定位用户的位置
地理位置 API 通过navigator.geolotion
提供。
获取当前定位getCurrentPosition()
方法用来获取设备当前位置。
这会异步地请求获取用户位置,并查询定位硬件来获取最新信息。当定位被确定后,定义的回调函数就会被执行。
navigator.geolocation.getCurrentPosition(function(position) { do_something(position.coords.latitude, position.coords.longitude); });
监视定位getCurrentPosition()
用于注册监听器,在设备的地理位置发生改变的时候自动被调用。也可以选择特定的错误处理函数。")
使用该函数不需要先调用getCurrentPosition()
它与 getCurrentPosition()
接受相同的参数,但回调函数会被调用多次。
var watchID = navigator.geolocation.watchPosition(function(position) { do_something(position.coords.latitude, position.coords.longitude); });
-
WebSocket
前后端双向通讯
WebSocket
是一种网络通信协议, 一种由HTML5 开始提供的、在单个 TCP 连接上进行全双工通讯的协议。它和HTTP协议的最大区别在于:HTTP 协议是一种无状态的、无连接的、单向的应用层协议当客户端想要知道服务端的变化时,HTTP协议必须使用“轮询”的方式,效率很低;而WebSocket
只需一次连接,便可以让服务端直接向客户端推送信息,从而告别轮询。
Node环境下运行,需要下载ws模块
5.localStorage
/ sessionStorage
代替cookie
本地存储
localStorage
: 方法存储的数据没有时间限制。
sessionStorage
: 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
localStorage
和sessionStorage
也可存储Json对象,存储时,通过JSON.stringify()将对象转换为文本格式;读取时,通过JSON.parse()
将文本转换回对象。
都是保存在浏览器端、且同源的
Cookie
只能存储4k左右,localstorage
和sessionstroage
可以达到5M或更大
sessionStorage
不在不同的浏览器窗口中共享,即使是同一个页面;localstorage
在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
6. 文件拖拽
File
: 代表一个文件对象
FileList
: 代表一个文件列表,类数组对象FileReader
用于从文件中提取内容FileWrite
用于向文件中写入类容
ondragover
事件在可拖动元素或选取的文本正在拖动到放置目标时触发。
7. WebWorker js多线程,提高性能
Web Worker 是HTML5标准的一部分,这一规范定义了一套API,它允许一段JavaScript程序运行在主线程之外的另外一个线程中。工作线程允许开发人员编写能够长时间运行而不被用户所中断的后台程序, 去执行事务或者逻辑,并同时保证页面对用户的及时响应,可以将一些大量计算的代码交给web worker运行而不冻结用户界面。
8. manifest 离线缓存
能够让你的Web应用程序指定哪些文件可以缓存在本地,使得你的网络断开时依然可以通过本地的缓存来进行访问浏览。
因为manifest文件必须是一个MIME type为text/cache-manifest类型的存在。文件后缀名可以自定义(建议为.appcache)所以我们需要现在服务端将.appcache后缀的文件类型声明为text/cache-manifest。以apache为例,我们需要在httpd.conf中加上:AddType text/cache-manifest .appcache