在 JavaScript 中拒绝后如何在 JavaScript 中重新请求摄像机或麦克风的许可
How to re-ask for permission for a video camera or microphone in JavaScript after decline in JavaScript
在 JavaScript 中拒绝后,如何在 JavaScript 中重新请求摄像机或麦克风的许可。例如,如果拒绝重新请求许可而用户不会同意
你不能(因为这可能导致权限提示垃圾邮件)。
用户必须在浏览器设置中重置或更改此项。当从 getUserMedia 获取 NotAllowedError(这是一个相当复杂的过程)时,您需要引导他们这样做,或者您提前仔细解释该过程,避免大部分时间点击“拒绝”。
当用户拒绝访问时,您不能“重新询问”。
但是,您可以做的是通过监听 PermissionStatus.onchange
事件(在基于 Chromium 的浏览器中,Firefox 仍然不支持 camera
值)来监视他们何时更改此设置。
所以你会这样做:
// after you caught denial
const status = await navigator.permissions.query({name: "camera"});
status.addEventListener("change", (evt) => {
// request again
navigator.mediaDevices.getUserMedia({ video: true })
.then(handleStream)
.catch(handleDeny);
}, { once: true });
在 JavaScript 中拒绝后,如何在 JavaScript 中重新请求摄像机或麦克风的许可。例如,如果拒绝重新请求许可而用户不会同意
你不能(因为这可能导致权限提示垃圾邮件)。
用户必须在浏览器设置中重置或更改此项。当从 getUserMedia 获取 NotAllowedError(这是一个相当复杂的过程)时,您需要引导他们这样做,或者您提前仔细解释该过程,避免大部分时间点击“拒绝”。
当用户拒绝访问时,您不能“重新询问”。
但是,您可以做的是通过监听 PermissionStatus.onchange
事件(在基于 Chromium 的浏览器中,Firefox 仍然不支持 camera
值)来监视他们何时更改此设置。
所以你会这样做:
// after you caught denial
const status = await navigator.permissions.query({name: "camera"});
status.addEventListener("change", (evt) => {
// request again
navigator.mediaDevices.getUserMedia({ video: true })
.then(handleStream)
.catch(handleDeny);
}, { once: true });