Javascript 检测设备限制的解除
用于让用户选择麦克风。此外,我使用创建一个选择设备,以便用户可以从UI更改设备 我在Firefox上,并没有检查其他浏览器的运行情况,但至少对于FF,我还没有找到解决方案 如果用户在被询问时选择不允许访问,则在用户取消限制之前,不得再次询问[1]: 问题是,是否有一种方法可以检测用户何时删除限制 场景通常是:Javascript 检测设备限制的解除,javascript,media,mediadevices,Javascript,Media,Mediadevices,用于让用户选择麦克风。此外,我使用创建一个选择设备,以便用户可以从UI更改设备 我在Firefox上,并没有检查其他浏览器的运行情况,但至少对于FF,我还没有找到解决方案 如果用户在被询问时选择不允许访问,则在用户取消限制之前,不得再次询问[1]: 问题是,是否有一种方法可以检测用户何时删除限制 场景通常是: 用户加载页面并被要求选择输入设备 用户拒绝 UI disables device selector + hide various stuff 用户解除限制(如上图所示) 显然,没有
UI disables device selector + hide various stuff
[1]也就是说:可以问,但结果是: MediaStreamError
消息:在当前上下文中,用户代理或平台不允许该请求。
姓名:
您应该能够从中检测到此更改 返回的对象具有
onchange
事件处理程序。因此,当用户更改其设置时,对“摄像头”
或“麦克风”
的查询将触发其更改事件
const camera_perm = await navigator.permissions.query( { name: 'camera' } );
camera_perm.onchange = (evt) => {
const allowed = camera_perm.state === "granted";
if( allowed ) {
// ...
}
else {
}
};
目前,Firefox仍然不支持PermissionDescriptor的“摄像头”
和“麦克风”
成员。
因此,对于该浏览器,我们可以使用的最接近的方法是通过轮询,如本问答中所述。Nice。这就是我要找的。太糟糕了,FF落后了,但至少知道一个地方可以关注进度。与此同时,您可能已经使用了
navigator.permissions.revoke
作为可选的回退,但这需要用户启用,因此很可能不处于活动状态。
const camera_perm = await navigator.permissions.query( { name: 'camera' } );
camera_perm.onchange = (evt) => {
const allowed = camera_perm.state === "granted";
if( allowed ) {
// ...
}
else {
}
};