您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > HTML

只用HTML,如何打开手机相机?前端小哥现场教学

时间:2022-11-17 16:25:04  来源:企鹅号  作者:量子位

Alex 发自 凹非寺

量子位 | 公众号 QbitAI

html不是编程语言,但这并不妨碍前端工程师把它玩出花儿来。

比如,有人就拿HTML来访问用户的相机——

在网页上,点击按钮即可直接打开手机前置镜头来拍照

(没错,就是前置镜头!小哥可能有镜子之类的)

也可以调用手机的后置镜头,开启摄像模式。

值得注意的是,在这里,小哥只用了HTML语言就实现了上述功能。

他利用HTML的capture属性,只需设置几个input参数,再加上几行代码搞定了。

比起别的实现方式,这样可以更便捷地获取用户相机权限;而且没什么安全问题。

不出所料,一大波程序员纷纷前来围观。有人表示:

用HTML%20capture属性直接访问相机,确实比用JAVAScript更方便

这位小哥的网名叫Austin%20Gil,他是一位从事网页开发的工程师。

 

下面就跟随小哥分享的内容,一起来看看具体实现步骤吧。

如何用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



Tags:HTML   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Alex 发自 凹非寺量子位 | 公众号 QbitAIHTML不是编程语言,但这并不妨碍前端工程师把它玩出花儿来。比如,有人就拿HTML来访问用户的相机——在网页上,点击按钮即可直...【详细内容】
2022-11-17  Tags: HTML  点击:(2)  评论:(0)  加入收藏
首先可以肯定,html5(简称h5)将在很多年内成为互联网的主流。那到底什么是h5呢?想了解h5,先要了解它的前身html和被它终结的flash:2000年左右的前端静态网页格式是html的,仅支持ie,n...【详细内容】
2022-09-26  Tags: HTML  点击:(48)  评论:(0)  加入收藏
你将要创造什么在本教程中,我将向您展示如何使用 JavaScript 和画布以饼图和圆环图的形式显示数字信息。什么是饼图?图表是一种统计工具,用于以图形方式表示数值数据。饼图将...【详细内容】
2022-08-31  Tags: HTML  点击:(70)  评论:(0)  加入收藏
<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><frameset rows="10%,*"><frame src="upper/one.php" name="logo"><frameset cols="20%,...【详细内容】
2022-08-03  Tags: HTML  点击:(493)  评论:(0)  加入收藏
写在开篇什么是表单呢?当前端想要提交数据给后端,怎么搞?那么在前端开发中,表单是常用的手段,比如常见的场景有:登录框、账号注册页、主机信息录入CMDB等等场景都是需要表单。那么...【详细内容】
2022-08-02  Tags: HTML  点击:(93)  评论:(0)  加入收藏
大家好,今天给大家介绍一款, css实现的图片列表切换轮播特效html页面前端源码(图1)。送给大家哦,获取方式在本文末尾。图1特效非常炫酷,可以用于制造音乐播放切换或视频播放切换前...【详细内容】
2022-05-24  Tags: HTML  点击:(207)  评论:(0)  加入收藏
①语义化标签,可以让页面有更加完善的结构,让页面的元素有含义,同时利于被搜索引擎解析,有利于SEO,主要标签包括下面的标签:html5新的常用标签②增强型表单可以通过input的type属...【详细内容】
2022-05-07  Tags: HTML  点击:(115)  评论:(0)  加入收藏
快速总结 ↬ 在这篇文章中,Louis Lazaris 描述并演示了一些有趣的 HTML 属性,您可能没有听说过也可能没有听说过,并且可能会发现它们非常有用,可以在您的项目中亲自使用。一月份...【详细内容】
2022-04-24  Tags: HTML  点击:(113)  评论:(0)  加入收藏
在网页中添加视频、声音、动画等,可以增强用户体验。在HTML5之前,为网页添加多媒体的唯一办法,就是使用第三方的插件(如,Adobe Flash等)。HTML5中,提供了对多媒体的原生支持,只需通...【详细内容】
2022-04-19  Tags: HTML  点击:(190)  评论:(0)  加入收藏
我们可以使用以下的方式去渲染htmlfunc main() { router := gin.Default() router.LoadHTMLGlob("templates/*") //router.LoadHTMLFiles("templates/template1.html", "tem...【详细内容】
2022-03-17  Tags: HTML  点击:(188)  评论:(0)  加入收藏
▌简易百科推荐
Alex 发自 凹非寺量子位 | 公众号 QbitAIHTML不是编程语言,但这并不妨碍前端工程师把它玩出花儿来。比如,有人就拿HTML来访问用户的相机&mdash;&mdash;在网页上,点击按钮即可直...【详细内容】
2022-11-17  量子位   企鹅号  Tags:HTML   点击:(2)  评论:(0)  加入收藏
过去Web非常简单。URL 指向服务器,服务器将数据混合成 html,然后在浏览器上呈现该响应。围绕这种简单范式,诞生了各种Java框架,以前可能需要数月时间完成的一个应用程序基本功能,现在借助这些框架创建相对复杂的项目却只需...【详细内容】
2022-10-18  InfoQ  搜狐号  Tags:Htmx   点击:(50)  评论:(0)  加入收藏
当今前端编程中,利用语义化的 HTML 结合 CSS 来完一个组件并不是一件难事,这也意味着无论在 React、Vue 中都可以插入,不过它俩不是今天的主角,接下来我将用一个例子来介绍如何...【详细内容】
2022-10-07  茶无味的一天  环球网  Tags:Web Components   点击:(45)  评论:(0)  加入收藏
<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><frameset rows="10%,*"><frame src="upper/one.php" name="logo"><frameset cols="20%,...【详细内容】
2022-08-03  lawsom    Tags:HTML框架   点击:(493)  评论:(0)  加入收藏
快速总结 ↬ 在这篇文章中,Louis Lazaris 描述并演示了一些有趣的 HTML 属性,您可能没有听说过也可能没有听说过,并且可能会发现它们非常有用,可以在您的项目中亲自使用。一月份...【详细内容】
2022-04-24  艾编程    Tags:html属性   点击:(113)  评论:(0)  加入收藏
在网页中添加视频、声音、动画等,可以增强用户体验。在HTML5之前,为网页添加多媒体的唯一办法,就是使用第三方的插件(如,Adobe Flash等)。HTML5中,提供了对多媒体的原生支持,只需通...【详细内容】
2022-04-19  我是FEIYA    Tags:HTML   点击:(190)  评论:(0)  加入收藏
我们可以使用以下的方式去渲染htmlfunc main() { router := gin.Default() router.LoadHTMLGlob("templates/*") //router.LoadHTMLFiles("templates/template1.html", "tem...【详细内容】
2022-03-17  萧潇墨    Tags:html   点击:(188)  评论:(0)  加入收藏
最近 Bootstrap 4 已经正式发布了,可能已经有爱尝鲜的小伙伴在 alpha 阶段就尝试过 BS4。不过今天要说的不是 BS4,而是官网里引入 BS4 框架依赖的 jQuery 的代码:<script src="...【详细内容】
2022-02-01  可可的答案    Tags:crossorigin   点击:(294)  评论:(0)  加入收藏
此文由掘金@天行天忌授权发布,前端晚间课对其内容进行微改。 HTML,超文本标记语言,是一种用于创建网页的标准标记语言。自从引入 HTML 以来,它就一直用于构建互联网。与 JavaScr...【详细内容】
2021-11-23  前端晚间课    Tags:HTML6   点击:(3221)  评论:(0)  加入收藏
HTML是什么?超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用。HTML 不是一种编程语言,而是一种标记语言 (markup language),是网页制作所必备的。“...【详细内容】
2021-11-05  人生三部曲丶    Tags:HTML   点击:(159)  评论:(0)  加入收藏
站内最新
站内热门
站内头条