dro*_*001 5 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)});
Run Code Online (Sandbox Code Playgroud)
MDN上的WebRTC错误仅引用全局错误事件.
我不了解ar.js事件,也无法回答是否有某种直接的方法来观察这一点。
如果您正在寻求一种绕过它的方法,那么浏览器中就没有这样的全局事件。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);
}
})();
Run Code Online (Sandbox Code Playgroud)
这应该会向您提供所需的通知,而不会导致第二个用户提示。
它之所以有效,是因为规范要求如果页面已经有摄像头流,则getUserMedia必须成功,而无需再次提示用户。
如果您不知道它何时会提示,那么您需要重写对象getUserMedia上的方法navigator.mediaDevices。如果您需要示例,像adapter.js这样的各种库都可以成功做到这一点。
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |