当前位置:首页 > 行业动态 > 正文

html5提供新的api

HTML5新增Canvas绘图、Geolocation定位、LocalStorage本地存储、WebSocket通信、Video/Audio多媒体、IndexedDB数据库、拖放API等,提升网页交互与离线能力,支持多线程及

HTML5 新API详解

本地存储(Local Storage & Session Storage)

用途:在客户端存储键值对数据,替代传统Cookie,支持更大容量。
区别
|特性| localStorage | sessionStorage |
|—|—|—|
|生命周期|永久(手动清除)|会话结束(标签页关闭)|
|作用域|同源所有页面共享|同源同标签页共享|
|容量|约5MB|约5MB|

语法

// 存储数据
localStorage.setItem('key', 'value');
// 读取数据
const value = localStorage.getItem('key');
// 删除数据
localStorage.removeItem('key');
// 清空所有数据
localStorage.clear();

WebSocket API

用途:实现浏览器与服务器的全双工实时通信,替代传统轮询。
优势:低延迟、双向通信、节省服务器资源。
示例

const socket = new WebSocket('ws://example.com');
socket.onopen = () => { console.log('连接成功'); };
socket.onmessage = (event) => { console.log('收到消息:', event.data); };
socket.send('Hello Server');

地理定位(Geolocation)API

用途:获取用户设备的经纬度信息(需用户授权)。
关键方法

html5提供新的api  第1张

navigator.geolocation.getCurrentPosition(
  (position) => {
    console.log(`纬度:${position.coords.latitude}`);
    console.log(`经度:${position.coords.longitude}`);
  },
  (error) => { console.error('定位失败:', error); }
);

Canvas API

用途:动态渲染2D/3D图形(如游戏、图表)。
2D示例

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 100, 50); // 绘制红色矩形

拖放(Drag and Drop)API

用途:实现元素的拖拽操作(如文件上传、组件排序)。
核心事件
|事件|触发时机|
|—|—|
|dragstart|开始拖拽时|
|dragover|拖拽经过目标时|
|drop|释放拖拽对象时|

示例

element.addEventListener('dragstart', (e) => {
  e.dataTransfer.setData('text/plain', '拖拽的数据');
});

媒体元素(Video/Audio)API

新增属性

  • autoplay:自动播放
  • controls:显示控件栏
  • loop:循环播放
  • muted:静音

事件监听

const video = document.querySelector('video');
video.addEventListener('play', () => { console.log('播放开始'); });

Web Worker API

用途:在后台线程执行脚本,避免阻塞主线程。
示例

// 主线程
const worker = new Worker('worker.js');
worker.postMessage('Hello Worker');
worker.onmessage = (e) => { console.log('收到消息:', e.data); };
// worker.js
self.onmessage = (e) => {
  postMessage(`Worker收到:${e.data}`);
};

File API

用途:处理本地文件(如预览、上传前验证)。
示例

const input = document.querySelector('input[type="file"]');
input.addEventListener('change', (e) => {
  const file = e.target.files[0];
  const reader = new FileReader();
  reader.onload = () => { console.log('文件内容:', reader.result); };
  reader.readAsText(file);
});

相关问题与解答

问题1localStorageCookie 有什么区别?
解答

  • 容量localStorage 约5MB,Cookie 仅4KB。
  • 生命周期localStorage 需手动清除,Cookie 可设置过期时间。
  • 传输Cookie 会随HTTP请求发送,localStorage 不会。
  • 用途localStorage 适合存储大量非敏感数据,Cookie 适合认证或小量数据。

问题2:为什么使用 WebSocket 比传统轮询更高效?
解答

  • 全双工通信:服务器可主动推送消息,无需客户端频繁询问。
  • 低延迟:建立一次连接后持续通信,减少重复握手开销。
  • 资源节约:减少不必要的HTTP请求,降低服务器
0