在 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 });