2 html5 浏览器已经支持的新API
HTML5规范下很多API浏览器都已经支持,这里我们列举几个很常用的浏览器支持的API:
1 tab页之间通信:
BroadcastChannel(channelName);
可用于多个不同浏览器tab页之间通信。实例化的时候Channel名称必须相同。
const broadcastChannel = new BroadcastChannel('myChannel')broadcastChannel.postMessage('Hello from tab 1');
使用postMessage 发送消息,并在另一个窗口监听消息
broadcastChannel.onmessage = function(e) {
console.log('Received:', e.data);
};
2 浏览器全屏:
requestFullscreen()
img, video, div元素等加上这个方法就可以实现全屏,使用document.exitFullscreen();退出全屏。
3 屏幕分享:
navigator.mediaDevices.getDisplayMedia() 这个就是将当前指定的屏幕分享出去。我们如下当代是将截取内容放在播放器中播放。
const stream = await navigator.mediaDevices.getDisplayMedia({video: true,});videoElement.srcObject = stream;
当然看到这个mediaDevices,这个对象目前可以使用的还有:
1 获取摄像头
navigator.mediaDevices.getUserMedia()
2 获取设备信息:
navigator.mediaDevices.enumerateDevices()
4 网络状态
navigator.onLine
以及给window增加了两个事件
window.ononline = function () {console.log("你的浏览器在线工作");};window.onoffline = function () {console.log("你的浏览器离线工作");};
5 requestAnimationFrame实现浏览器绘制帧时的调用
这个api可用来替代使用interval回调时动画都问题。当然vue底层也用了这个新的api.
var ball = document.getElementById("ball");var pos = 0;function moveBall() {if (pos == 350) {return; // 如果到达指定位置则停止动画} else {pos += 1;ball.style.top = pos + "px";ball.style.left = pos + "px";window.requestAnimationFrame(moveBall); // 继续下一帧动画}}// 启动动画window.requestAnimationFrame(moveBall);
6 Clipboard 粘贴板对象,当然这对象功能也很强大。
通过writeText写入内容,通过 readText读取复制内容。
navigator.clipboard.writeText(text).then(function() {console.log("复制成功!");}, function() {console.log("复制失败!");});
等等,还有一些其他的,比如formData,fileRender等等这些大家平时用的比较多的,我这里就不再举例。还有canvas这种,svg等这些后面我会单独拿出来讲。