H5中iframe中嵌套的页面无法使用摄像头和麦克风 您所在的位置:网站首页 摄像头调取失败怎么解决呢 H5中iframe中嵌套的页面无法使用摄像头和麦克风

H5中iframe中嵌套的页面无法使用摄像头和麦克风

2024-07-12 11:15| 来源: 网络整理| 查看: 265

无法使用的原因:

在 webview 的 iframe 中,默认禁止不同域名下的录音及摄像头的访问权限(即使手机在系统设置中已为 APP 开启了权限)。 请添加图片描述

使用:

如果需要访问需要对 iframe 的 allow 属性设置访问权限。根据报错提示,给标签加上相应的allow属性。

在vue中,直接在iframe上调用,有时候也是不行的; 解决方案:在vue中嵌入iframe去调取摄像头和麦克风,iframe的allow的属性必须得通过js的方式添加进去

var iframeEl = this.$refs.iframes if (iframeEl) { console.log(iframeEl, '获得iframe标签'); iframeEl.allow = 'microphone;camera' }

一般这么配置已经可以打开麦克风权限了,但是有的时候还是无法获取:自己测试的时候,IOS手机这么写可以获得权限,安卓手机却无法获取权限。

解决:

如果需要访问需要对 iframe 的 allow 属性设置访问权限。 原则上,如果 allow 可按以下方式设置: 授权设备1 授权域名列表1;授权设备2 授权域名列表2;授权设备3 授权域名列表3;…… 如:

microphone https://www.baidu.com;camera https://www.sohu.com

但一半情况下,授权域名列表在省略时表示对所有域名均可访问,因此 allow 的设置可以简化为: microphone;camera等价于microphone *;camera *

使用简写的话, iOS 系统下当时就好用了,Android 环境下还有问题,就是因为 Android 下的 webview 不认简写,只能把授权域名列表写全才行。

所以最终得到的解决方案如下:

if (iframeElment) { console.log(iframeElment, '获得iframe标签'); iframeElment.allow = 'microphone *;camera *' }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有