Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox权限:';名称';PermissionDescriptor&x27的成员;摄像机&x27;不是枚举PermissionName的有效值_Javascript_Firefox_Navigator - Fatal编程技术网

Javascript Firefox权限:';名称';PermissionDescriptor&x27的成员;摄像机&x27;不是枚举PermissionName的有效值

Javascript Firefox权限:';名称';PermissionDescriptor&x27的成员;摄像机&x27;不是枚举PermissionName的有效值,javascript,firefox,navigator,Javascript,Firefox,Navigator,我正在制作一个web应用程序,需要检查用户摄像头访问权限是否已被授予或未使用权限查询 我尝试过以下代码: navigator.permissions.query({name:'camera'}).then(function(result) { console.log(result); }); 它在Google Chrome 70上运行良好,但在firefox上给了我一个错误: TypeError:PermissionDescriptor“camera”的“name”成员不是枚举Permiss

我正在制作一个web应用程序,需要检查用户摄像头访问权限是否已被授予或未使用权限查询

我尝试过以下代码:

navigator.permissions.query({name:'camera'}).then(function(result) {
 console.log(result);
});
它在Google Chrome 70上运行良好,但在firefox上给了我一个错误:

TypeError:PermissionDescriptor“camera”的“name”成员不是枚举PermissionName的有效值。

我一直在寻找这个问题,但没有任何帮助

有人能帮我吗


谢谢,

权限API被标记为一项实验性技术

问题是Firefox确实有
navigator.permissions
,也支持
query
方法,但是,它不支持上面列出的所有权限名称

您可以自己尝试:转到Firefox上的控制台并执行

// geolocation is working fine
navigator.permissions.query({ name: 'geolocation' }).then(console.log)

// camera, microphone is not supported, throws
navigator.permissions.query({ name: 'camera' })
// TypeError: 'name' member of PermissionDescriptor 'camera' is not a valid value for enumeration PermissionName.
navigator.permissions.query({ name: 'microphone' })
// TypeError: 'name' member of PermissionDescriptor 'microphone' is not a valid value for enumeration PermissionName.
关于Github在权限API上的位置,在中有一个公开的讨论。老实说,正如我所看到的,他们还没有得出任何结论

您可以做的是创建一个基本功能,该功能可在所有浏览器上运行,而无需权限信息。在Chrome上,您可以通过使用
权限逐步增强用户体验。查询
以确定摄像头和麦克风的权限

或者,您可以使用以下方法来处理此问题:例如,您可以调用
getUserMedia
并立即停止曲目,前提是您只想确保您的应用程序具有麦克风和摄像头的权限。但是要小心,这有多个问题:

  • 摄像机灯将打开一秒钟
  • 如果您的用户拒绝许可,您将很难再次请求许可,因此在请求许可之前,您应该向用户说明为什么需要这些许可

  • 这种方法是有效的。但是我怎样才能得到国家。例如,如果state='grated',我想稍微改变一下UI,我的理解是,不可能在所有流行浏览器上都这样做。请记住,我是在2018年使用这些API的您可以创建一个基本功能,在所有没有权限信息的浏览器上运行,在Chrome上,您可以通过使用permissions.query来逐步增强用户体验,以确定摄像头和麦克风的权限。现在是2020年9月。Safari 14似乎没有navigator.permissions对象。FF 80仍然不支持名称:“摄像头”或名称:“麦克风”。对于FF,在.query()返回的承诺中添加一个catch至少可以让您保持某种状态,这样您就知道无法订阅更新。我发现有必要随时跟踪以有条件地取消事件侦听器。在获取权限后立即停止所有跟踪对我来说并不是删除相机指示灯。