Я не знаю 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);
}
})();
Это должно дать вам уведомление, которое вы хотите, не вызывая второе приглашение пользователя.
Это работает, потому что спецификация требует, чтобы getUserMedia должен был успешно завершиться без запроса пользователя снова, если страница уже имеетпоток камеры.
Если вы не знаете, когда он выдаст запрос, вам необходимо переопределить метод getUserMedia
для объекта navigator.mediaDevices
.Различные библиотеки, такие как adapter.js , делают это успешно, если вам нужен пример.