如何听取摄像头错误引发的全球性事件:NotAllowedError

问题描述 投票:5回答:1

我使用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引用全球唯一的错误事件。

javascript webrtc ar.js
1个回答
1
投票

我不知道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必须在不再次提示用户,如果网页已有摄像头流成功。

如果你不知道什么时候它会提示,那么你需要重写getUserMedia对象的navigator.mediaDevices方法。像adapter.js各种库成功做到这一点,如果你需要的例子。

© www.soinside.com 2019 - 2024. All rights reserved.