Возможно ли воспроизвести аудиофайл после получения разрешения пользователя на воспроизведение аудио 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);

Если пользователь успеет в течении первых пяти секунд после загрузки страницы кликнуть в любом месте страницы, команда сработает. Если нет - выдаст ошибку. Один раз кликнуть не так уже сложно.

→ Ссылка