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

无法使用的原因:

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

使用:

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

<iframe ref="iframes" src="xxx" allow='microphone;camera;'></iframe>

在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 *'
            }
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hope°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值