2 回答
TA贡献1817条经验 获得超6个赞
这是实际答案。只需将其发布在这里供下一个用户使用:
实际上,当前的实现似乎根本不依赖于capture属性,而仅依赖于type和accept属性:浏览器显示一个对话框,用户可以在其中选择文件的获取位置,以及该capture属性不考虑在内。例如,iOS Safari依赖于图像和视频(非音频)的accept属性(非捕获)。即使您不使用该accept属性,浏览器也会让您在“拍摄照片或视频”和“选择现有”之间进行选择(感谢@firt指出这一点)。
TA贡献1865条经验 获得超7个赞
“正确”的代码和您应该使用的代码是第五个代码:
<input type="file" accept="image/*">
这就是为什么它在大多数设备上都能正常工作的原因。上面的代码正确,完整,足以告诉iOS和Android:
您要捕获图像(accept="video/*"用于视频和 accept="audio/*"音频,请完全跳过以允许任何操作)。
用户应该能够选择现有的一个或当场捕获它
我是否可以信任浏览器,它将始终添加摄像头以上传没有捕获属性的对话框?
是。
该capture属性不是用来在对话框中包括camera选项的(<input type="file">足够了),而是指示首选从网络摄像头直接捕获。根据W3C建议规范:
capture属性是一个布尔属性,如果指定,则指示直接从设备捕获媒体是首选。
capture受Android 3.0+支持,如果capture代码中存在,它将直接带您进入相机应用。
iOS6-10中不提供支持,该支持将始终为您提供至少两个选项:“拍照” +“照片库”。
该capture属性在规范中得到了发展(这就是为什么您在整个StackOverflow中都会看到多个版本的原因):
2010年7月: accept="image/*;capture=camera"
2011年4月:(capture="camera"字符串)
2012年12月:(capture布尔值,W3C候选推荐标准,)
PS:我已经对HTML Media Capture进行了大量研究,请参见HTML9 Media Capture的正确语法和iOS9中Media Capture 的新提示。这是我的测试平台,具有20多种代码组合。
- 2 回答
- 0 关注
- 652 浏览
相关问题推荐
添加回答
举报