仅使用HTML打开用户的相机,被忽略的Capture属性
在文件输入类型中有一个 capture
的可选属性,它可以设置应该使用哪个设备来捕获该accept
属性定义的类型的新媒体。值包括user
和environment
。
Capture 以前是一个布尔属性,如果存在,则请求使用设备的媒体捕获设备(如相机或麦克风)而不是请求文件输入。
捕获属性的有趣之处在于用户通过移动设备访问网站时,如果他们与该input
交互,实际上会打开他们的一个摄像头而不是默认文件选择器,可能是前置摄像头或后置摄像头,具体取决于属性指定何值:
user
: 它将使用面向用户或前置摄像头和/或麦克风environment
: 它将使用外置或后置摄像头和/或麦克风。
编写一个 index.html
测试一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
<label for="environment">Capture environment:</label>
<br>
<input type="file" id="environment" capture="environment" accept="video/*">
<br><br>
<label for="user">Capture user:</label>
<br>
<input type="file" id="user" capture="user" accept="image/*">
</body>
</html>
观察 HTML
代码中的两个 input
输入,它们都具有捕获属性并且它们都具有接受属性。一个被设置为 environment
捕捉并且接受任何类型的视频。另一个设置为 user
捕捉并且接受任何类型的图像,如果在手机上打开该页面并单击第一个输入,手机的相机将以视频录制模式打开。单击第二个输入时,手机会以拍照模式打开相机(正常情况下会是前置摄像头)。
演示来源:截取自油管视频
当拍摄完成照片或视频时,该文件将发送到 HTML
输入,酷😎。
每当我们谈论新的 Web API
或功能时,我们都必须讨论兼容性,乍一看该属性并不好:
但是不要慌,因为所有这些不受支持的浏览器实际上都是桌面浏览器,它们没有前置或后置摄像头,所以不支持也是有道理的。
但是反过来所有支持的浏览器都是移动浏览器,所以这个功能兼容性并不是看起来那么差。
当然了,即使用户使用不受支持的浏览器访问,它也会退回到默认的文件选择器UI,事实上许多手机系统默认选择器里就包含了拍摄按钮,不过使用该属性还是能为移动网页在上传时拍摄照片、视频或录音时创造更好的用户体验。
以上就是文章的全部内容了,感谢看到这里!如果觉得写得还不错,对你有所帮助或启发,别忘了点赞收藏关注“一键三连”哦~ 我是茶无味的一天(m.palxp.cn)(公众号: 品味前端),一名平凡的前端 Developer,希望与你共同成长~