@zloidennnn

Воспроизведение аудио?

По событию на страницу воспроизводится звук с помощью кода:
function soundPlay() {
        var audio = new Audio();
        audio.src = 'audio/audio.mp3';
        audio.play();
    }

Но если не было активности на странице(минимум щелчка мыши) - выдает ошибку
Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.

Есть ли возможность обходить данную логику?
  • Вопрос задан
  • 11818 просмотров
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Полностью обойти не получится, ибо политика против агрессивного воспроизведения звука.
Звук, что у video что у audio, можно включать только синхронно по действию пользователя.
В blink (chrome, chromium, etc.) прокатит хак, если на действие пользователя вызвать метод load(), после play() можно вызывать когда угодно. Однако хак не работает в AppleWebkit (Safari на osX, любой браузер на iOS).

Кроме того, эту ситуацию можно отлавливать. В современных браузерах метод play возвращает промис, который резолвится после удачного запуска и реджектится при неудачном (как в Вашем примере).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы