我不知道 ar.js 事件,并不能回答它是否有一些直接的方式来观察这一点。
ar.js
如果你想要一种破解它的方法,那么在浏览器中就没有这样的全局事件。 NotAllowedError 来自于召唤 await navigator.mediaDevices.getUserMedia() 。
NotAllowedError
await navigator.mediaDevices.getUserMedia()
但是,如果您大致知道它何时提示用户,那么您可以执行并行请求, 像这样 :
// 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 如果您需要一个例子,请成功完成此操作。
getUserMedia
navigator.mediaDevices