Возможно ли воспроизвести аудиофайл после получения разрешения пользователя на воспроизведение аудио 1 раз?
Я пытаюсь воспроизвести аудио без взаимодействия с пользователем и получаю ошибку:
"Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
Вот мой код:
<audio id="beep"> <source src="~/Content/Sounds/beep.mp3" type="audio/mp3"> </audio>
<script>
var playAudio = $("#beep")[0];
playAudio.play();
</script>
Как я понимаю, это запрещено текущими браузерами воспроизводить аудио без явного взаимодействия пользователя. Возможно ли как-то, когда страница загружается, попросить пользователя дать разрешение на воспроизведение аудио на сайте, и только после явного разрешения пользователя загрузить страницу, а затем вызывать этот код в JS, когда мне нужно?
Ответы (1 шт):
Ваш код хочет воспроизвести звук по ходу загрузки страницы. В этом случае никак не успевает пользователь взаимодействовать со страницей. В отличии от этой ситуации, по программным событиям для уведомлений можно автоматом воспроизводить аудио, но всё упирается в это взаимодействие, оно должно произойти до того, как произойдет первое программное событие. Достаточно кликнуть в любом месте страницы.
Ну, специально для тех, кто ставит минусы, если они не поняли, что я хочу сказать, вот простой пример программного события с уведомлением - выдача звукового сигнала по истечению пяти секунд после загрузки страницы:
setTimeout function(){
audio.play();
}, 5000);
Если пользователь успеет в течении первых пяти секунд после загрузки страницы кликнуть в любом месте страницы, команда сработает. Если нет - выдаст ошибку. Один раз кликнуть не так уже сложно.