我想向用户解释为什么在询问相机/麦克风之前需要它们,以便他们可以做出更好的选择,如果他们想要授予它们。
为了实现我需要一种方法来检测先前是否已授予权限,以便我可以在实际询问他之前向用户解释该请求。我也不想每次都问(即使我已经拥有权限!)。
答案 0 :(得分:7)
navigator.mediaDevices.enumerateDevices().then(devices =>
devices.forEach(device => console.log(device.label)))
尚未允许的时候device.label ==“”
当允许device.label!=“”
答案 1 :(得分:4)
使用Cookie或localStorage
记住您之前已经问过它们并得到肯定。
有些浏览器允许用户为相机或麦克风的每次使用授予权限,因此,如果您的指标是您不想每次都询问它们,那么请不要将您的信息与您是否获得永久访问权限相关联。
另一个答案中提到的navigator.mediaDevices.enumerateDevices
技巧目前检测到对相机 和/或 麦克风的持续许可 - 但你不知道哪一个或者你是否被授予了。
此外,这可能会随着时间的推移而中断,因为最近更新了规范以解除对相机和/或麦克风持久访问的标签的访问,部分原因是为了更好地支持单用户权限用例。一旦浏览器更新到规范,它就不再意味着在这些情况下持久的摄像头和/或麦克风许可。
对是否保留权限的长期回答是使用query
,但正如您在运行此操作时所看到的,浏览器尚不支持"camera"
和{{1} (或者在某些情况下):
"microphone"