javascript - 如何监听由网络摄像头错误 : NotAllowedError 触发的全局事件

标签 javascript webrtc ar.js

我正在使用 ar.js,它使用用户网络摄像头并发出权限提示。我想要的是在用户允许或拒绝访问网络摄像头或之前已经这样做的情况下收听此对话触发的全局事件。

我试过像这样的全局听众:

 document.documentElement.addEventListener("error", e=>{console.log("GOT ERROR : ", e)})
 window.addEventListener("error", e=>{console.log("GOT ERROR : ", e)});

WebRTC errors on MDN仅引用全局错误事件。

最佳答案

我不知道 ar.js 事件,也无法回答它是否有一些直接的方式来观察这个。

如果您正在寻求一种绕过它的方法,那么浏览器中就没有这样的全局事件。 NotAllowedError 来自调用 await navigator.mediaDevices.getUserMedia()

但是如果您大致知道提示用户的时间,那么您可以执行并行请求,like this :

// library
(async () => {
  video.srcObject = await navigator.mediaDevices.getUserMedia({video: true});
})();

// us
(async () => {
  try {
    await navigator.mediaDevices.getUserMedia({video: true});
    console.log("GOT CAM");
  } catch (e) {
    console.log("GOT ERROR : " + e);
  }
})();

这应该会在不引起第二个用户提示的情况下为您提供所需的通知。

之所以有效,是因为规范要求 getUserMedia如果页面已经有摄像头流,则必须在不再次提示用户的情况下成功。

如果您不知道它何时会提示,那么您需要覆盖 navigator.mediaDevices 对象上的 getUserMedia 方法。各种图书馆,如 adapter.js如果您需要示例,请成功执行此操作。

关于javascript - 如何监听由网络摄像头错误 : NotAllowedError 触发的全局事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54595779/

相关文章:

javascript - 在使用 Flask 时也使用大括号作为 Vue.js 中的值

javascript - 将挖空 View 模型拆分为多个文件

javascript - 在 Aframe AR.js 中显示一个预加载屏幕,直到所有 Assets 加载和渲染

javascript - 我想加载实体以进行动画处理

javascript - 发送压缩后的 xhr

javascript - 如何在 Ajax 响应后刷新特定的 div?

asp.net - 我可以在我的 Asp.net Web 应用程序中使用 Node.js 吗?

javascript - 在浏览器中播放原始 h264 直播流

javascript - 在没有互联网连接的情况下,WebRTC 是否支持点对点连接?

javascript - 使用AR.js扫描二维码并根据扫描值显示对象