HTML5新兴API速览

259 阅读2分钟

这是我参与更文挑战的第8天,活动详情查看:更文挑战

HTML5 除了对 DOM 进行了更完备的规范,还引入了一些新兴 API,从而赋予 Web 开发更强大的能力,本文将对这些 API 做一个速览。

一、requestAnimationFrame

requestAnimationFrame 用来解决 setTimeout 和 setInterval 在动画中不理想表现的问题。它表示在重绘屏幕前调用一个函数,因此能感知屏幕变化,而 setTimeout 和 setInterval 对屏幕变化是无感知的。

取消执行是 cancelAnimationFrame。

二、Page Visibility API

用于判断页面可见性,页面不可见时可以让轮询或动画停下来,以此做性能优化。页面可见性 API 本身比较简单,如下:

  • document.hidden:true 表示页面隐藏了,false 表示页面显示
  • document.visibilityState:表示页面状态
  • document.visibilitychange:页面隐藏/切换时会触发该事件

三、Geolocation API

地理位置 API,访问前需得到用户许可,在浏览器实现中是 navigator.geolocation 对象,常用方法如下:

  • getCurrentPosition:获取当前位置,会触发请求用户共享地理位置信息的对话框
  • watchPosition:跟踪用户位置,相当于定时调用 getCurrentPosition,但它是等待系统发出位置改变的信号,而不是轮询。
  • clearWatch:清除 watchPosition

四、File API

用于增强对本地文件的操作,主要有如下内容:

  • files:文件输入元素上新增属性,表示文件信息集合
  • FileReader:异步读取文件,主要方法如下:
    • readAsText:以纯文本读取文件,将读取的文本保存在 result 属性中
    • readAsDataURL:读取文件,将以数据 URI 形式保存在 result 属性中
    • readAsBinaryString:读取文件,将以字符串形式保存在 result 属性中
    • readAsArrayBuffer:读取文件,将包含内容的 ArrayBuffer 保存在 result 属性
  • load:事件,文件成功加载后触发
  • progress:事件,每50ms做鱼触发一次
  • error:事件,失败时触发

五、Web 计时

主要是 window.performance 对象,有如下一些属性,表示各阶段的时间点:

  • performance.navigation
    • redirectCount:重定向次数
    • type:刚刚发生的导航类型
  • performance.timing
    • navigationStart:开始导航到当前页面的时间
    • unloadEventStart:前一个页面 unload 事件开始时间
    • unloadEventEnd:前一个页面 unload 事件结束时间
    • 其他不再列出

六、Web Workers

让 JavaScript 在后台运行,相当于“多线程 JS”,通过 onMessage 和 postMessage 收发消息。