Автоматическое воспроизведение звука без действий пользователя на странице. React JS
Всем доброго времени суток!
Столкнулся со следующей задачей: при обновлении информации по сокетам необходимо воспроизводить звук - уведомление, при этом никакие действия от пользователя не ожидаются/невозможны. Как это возможно реализовать?
Буду бесконечно благодарен за помощь в решении этой головоломки :)
Ответы (3 шт):
// Создайте аудиоэлемент
const audio = new Audio('путь_к_вашему_звуковому_файлу.mp3');
// Функция для воспроизведения звука уведомления
function playNotificationSound() {
audio.play();
}
// Где-то в вашем коде, когда вы получаете обновление по сокетам:
socket.on('обновление', function(data) {
// Обработка обновления
// Воспроизведите звук уведомления
playNotificationSound();
});
Без клика звук включить никак не получится.
Только баннер мешающий читать контент, по которому нужно кликнуть поможет.
Добавь на страницу кнопку "включить звук". При нажатии на кнопку создавай элемент аудио и ставь его на паузу.
Современные версии браузеров не поддерживают автоматическое воспроизведение аудио по загрузке страницы, этой теме уже не меньше, чем 5 лет. Ваш код успешно будет работать после того, как на странице хотя бы один раз выполнить любое пользовательское действие из ниже перечисленных:
- Любой клик. (можно по пустому месту на странице)
- Нажатие на любую клавишу.
- Прокрутка. (скролл)
Движение курсором таковым действием не считается. Есть хороший вариант имитации автоматического воспроизведения звука: воспроизведение по событию наведения курсора на страницу. Срабатывает во время наведения курсора на страницу после обновления страницы браузерной кнопкой обновления. В этом случае посетитель сайта может даже не догадываться о том, что используется это событие, и при этом кажется, что звук воспроизводится автоматически после обновления страницы:
document.onmouseover =_=> audio.play();
<audio id=audio src="https://mysynthesizer.github.io/index.hetemeel/track1.mp3" controls></audio>