我使用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必须在不再次提示用户,如果网页已有摄像头流成功。
如果你不知道什么时候它会提示,那么你需要重写getUserMedia
对象的navigator.mediaDevices
方法。像adapter.js各种库成功做到这一点,如果你需要的例子。