网站首页 > 技术文章 正文
Alex 发自 凹非寺
量子位 | 公众号 QbitAI
HTML不是编程语言,但这并不妨碍前端工程师把它玩出花儿来。
比如,有人就拿HTML来访问用户的相机——
在网页上,点击按钮即可直接打开手机前置镜头来拍照。
(没错,就是前置镜头!小哥可能有镜子之类的)
也可以调用手机的后置镜头,开启摄像模式。
值得注意的是,在这里,小哥只用了HTML语言就实现了上述功能。
他利用HTML的capture属性,只需设置几个input参数,再加上几行代码搞定了。
比起别的实现方式,这样可以更便捷地获取用户相机权限;而且没什么安全问题。
不出所料,一大波程序员纷纷前来围观。有人表示:
用HTML capture属性直接访问相机,确实比用JavaScript更方便。
这位小哥的网名叫Austin Gil,他是一位从事网页开发的工程师。
下面就跟随小哥分享的内容,一起来看看具体实现步骤吧。
如何用HTML打开相机?
首先当然是写代环节。
小哥创建了一个index.html文档,配合HTML的accpet属性,来指定不同标签所要capture的文件的具体属性。
在这里,他设置了“environment”和“user”两个标签。
当用户点击environment时,可以调用设备的后置镜头,并拥有录像功能;而当用户点击user时,就能打开设备前置镜头来拍照了。
具体代码如下:
到这里,眼尖的人可能已经发现:没有提示用户是否打开访问相机的权限,网页就直接调用了相机。
那这样操作,有没有安全风险啊?
对此,小哥给出答案:无额外风险。
因为浏览器其实并不能真正控制用户相机(虽然看起来好像可以直接访问),而不过是能轻松上传相机生成的新文件罢了。
说人话——对用户而言,浏览器通过HTML只能打开摄像头;如果需要把照片或者视屏展示到网站,或者保存下来,仍然需要用到JavaScript的MediaDevices API。
有网友补充道,这种操作方式比纯用JavaScript更安全。
因为运用JS的话,在用户允许访问相机后,浏览器就能直接控制摄像头。
而在Web 3.0标准之后(现在主要用的是Web 5标准),规定网页不能直接访问用户的镜头。
不过,小哥也指出:这种直接通过HTML指令打开用户用户摄像头的方式还存在目前不足,比如兼容性不太好。
△图源caniuse.com:红色框表示不支持;绿色框表示支持;棕色框表示部分支持;灰色框表示未知
量子位亲测了一下小哥的这段代码,结果显示:
点击environment和user按钮,在MacBook上分别可以打开视频格式和图片格式的文件;
而在iPhone上,使用百度等浏览器,真的可以直接打开前置和后置摄像头。
感兴趣的伙伴们可以用下面链接中的代码试试~
传送门:
https://austingil.com/html-capture-attribute/
参考链接
[1]https://www.youtube.com/watch?v=DSTXUEHZRiU&t=1s
[2]https://news.ycombinator.com/item?id=32738501
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
猜你喜欢
- 2024-12-28 12306手机客户端推出2项新功能 铁路12306手机
- 2024-12-28 铁路12306手机客户端推出两项新功能!
- 2024-12-28 铁路12306手机客户端推出两项新功能→
- 2024-12-28 注意!铁路12306手机客户端推出两项新功能→
- 2024-12-28 传音与联发科共建人工智能联合实验室,聚焦手机端侧AI技术创新
- 2024-12-28 终于,手机端 AI,来了 手机ai功能怎么使用
- 2024-12-28 铁路12306手机客户端推出购票需求预填等新功能
- 2024-12-28 铁路12306手机客户端推出购票需求预填等两项新功能
- 2024-12-28 最大卖点即最大隐忧:“越用越懂你”的AI手机,你敢用吗?
你 发表评论:
欢迎- 05-30为什么说网上的md5加密解密站都是通过彩虹表解密的?
- 05-30一文读懂md5,md5有什么用,什么是md5加盐
- 05-30Java md5加密解密数据
- 05-30MD5是什么?如何进行MD5校验?
- 05-30专家教你简单又轻松的MD5解密方法,一看就会
- 05-30多学习才能多赚钱之:vscode怎么安装插件
- 05-30VSCode无限画布模式(可能会惊艳到你的一个小功能)
- 05-30VSCode神级Ai插件Cline:从安装到实战【创建微信小程序扫雷】
- 477℃几个Oracle空值处理函数 oracle处理null值的函数
- 472℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 468℃Oracle分析函数之Lag和Lead()使用
- 456℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 450℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 447℃【数据统计分析】详解Oracle分组函数之CUBE
- 427℃Oracle有哪些常见的函数? oracle中常用的函数
- 425℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)