Firefox 权限:PermissionDescriptor 'camera' 的 'name' 成员不是枚举 PermissionName 的有效值
Firefox permission: 'name' member of PermissionDescriptor 'camera' is not a valid value for enumeration PermissionName
我正在制作一个网络应用程序,它需要使用权限查询检查用户相机访问权限是否已被授予运行。
我试过代码:
navigator.permissions.query({name:'camera'}).then(function(result) {
console.log(result);
});
它 运行 在 Google Chrome 70 上很好,但在 firefox 上给我一个错误:
TypeError: 'name' PermissionDescriptor 成员 'camera' 不是枚举 PermissionName 的有效值。
我一直在寻找这个问题,但没有任何帮助。
有人可以帮我吗?
谢谢,
权限API被标记为实验技术。
问题是 Firefox 确实有 navigator.permissions
并且也支持 query
方法,但是,它不支持 MDN's Permissions API page 中列出的所有权限名称.
您可以自己尝试:转到 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.
在 mozilla/standards-positions
中对 Github 进行了公开讨论,讨论了他们在权限 API 上的立场。老实说,据我所知,他们还没有得出任何结论。
你可以做的是创建一个基本功能,它可以在没有权限信息的情况下在所有浏览器上运行,在 Chrome 上,你可以通过使用 Permissions.query
来确定相机和麦克风权限。
或者,您可以使用 MediaDevices.getUserMedia
想出一些逻辑来处理此问题:例如,您可以调用 getUserMedia
并立即停止轨道,如果您唯一想要的是确保您的应用已授予麦克风和摄像头权限。不过要小心,这有很多问题:
- 相机灯会亮一秒
- 如果您的用户拒绝权限,您将很难再次请求权限,因此在请求权限之前,您应该向用户说明为什么需要这些权限
我正在制作一个网络应用程序,它需要使用权限查询检查用户相机访问权限是否已被授予运行。
我试过代码:
navigator.permissions.query({name:'camera'}).then(function(result) {
console.log(result);
});
它 运行 在 Google Chrome 70 上很好,但在 firefox 上给我一个错误:
TypeError: 'name' PermissionDescriptor 成员 'camera' 不是枚举 PermissionName 的有效值。
我一直在寻找这个问题,但没有任何帮助。
有人可以帮我吗?
谢谢,
权限API被标记为实验技术。
问题是 Firefox 确实有 navigator.permissions
并且也支持 query
方法,但是,它不支持 MDN's Permissions API page 中列出的所有权限名称.
您可以自己尝试:转到 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.
在 mozilla/standards-positions
中对 Github 进行了公开讨论,讨论了他们在权限 API 上的立场。老实说,据我所知,他们还没有得出任何结论。
你可以做的是创建一个基本功能,它可以在没有权限信息的情况下在所有浏览器上运行,在 Chrome 上,你可以通过使用 Permissions.query
来确定相机和麦克风权限。
或者,您可以使用 MediaDevices.getUserMedia
想出一些逻辑来处理此问题:例如,您可以调用 getUserMedia
并立即停止轨道,如果您唯一想要的是确保您的应用已授予麦克风和摄像头权限。不过要小心,这有很多问题:
- 相机灯会亮一秒
- 如果您的用户拒绝权限,您将很难再次请求权限,因此在请求权限之前,您应该向用户说明为什么需要这些权限