js как загружать аудио файл уже во время работы сайта
Мне нужно повесить аудио на одно событие. Для этого хочу загрузить это аудио в переменную
audio = new Audio(url);
Но данное аудио нужно не в самом начале загрузки сайта. А например секунд через 30 его работы. Поэтому хотелось бы, чтобы сам сайт загрузился, а аудио загружалось уже в фоне, чтобы загрузка страницы не стала медленнее. Как это реализовать? Придумал такой вариант, но не уверен в его правильности и не уверен, что вообще понял суть этого метода, поэтому и спрашиваю
/*Код который нужен для работы сайта и загружается сразу, используется с первой секунды*/
....
...
....
....
let audio = getAudio(url);
const getAudio = async url => {
return await newAudio(url);
}
Ответы (2 шт):
Все просто, я дурак
Если указан URL-адрес, браузер начинает асинхронно загружать медиаресурс перед возвратом нового объекта.
То есть, достаточно просто
let var = new Audio(src);
<script>
var audio = new Audio("sound.mp3"); // объявили и загрузили файл предварительно, чтобы потом на это не уходило время
setTimeout(function(){
audio.play(); // воспроизводим по требованию через 30 сек после входа на страницу
}, 30000);
</script>
В течении первых 30 секунд ещё нужно успеть сделать пользовательское действие на странице, иначе вместо восспроизведения получим ошибку в консоли: Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first