Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему audio не воспроизводится при вызове play()?

Давид Мейстер Мастер (2054), открыт 2 недели назад
   console.log('---'); 
console.log(searchAudio[0]);
searchAudio[0].play();
console.log('fff');
Говорит что у audio нету метода play(), но как его может не быть и как это решить?
1 ответ
Андрей Высший разум (430691) 2 недели назад
Потому, что воспроизведение звука заблокировано до того момента, пока посетитель сайта не нажмёт сам на кнопку Play. Слишком много было баннеров, посреди ночи врубающих звук на полную громкость.
Давид МейстерМастер (2054) 2 недели назад
по сути это событие отрабатывается после нажатия, в кратце расскажу о функции, есть самописная функция audio, примерно так она выглядела до изменений
 function audio(path, play = true) { 
var audio = new Audio(path);
if ($('audio').length > 10) $('audio').slice(0, 5).remove();
$('#root').append(audio);
var volume = (audioStatus) ? globalVolume : 0;
audio.volume = volume;
if (play) audio.play();
return audio;
}
Но сегодня решил её оптимизировать подумав, "Зачем прогружать audio которые уже воспроизводились на странице?", и так появилась вторая версия (в следующем комментарии её отправлю), но почему то если с помощью new Audio делать play() то всё окей, а если с помощью условно $('audio').play() то оно уже так не работает, может есть решение такого?
 нужен вот такой код
но
он
будет работать
если
его
загрузить на сайт,хостинг
так оффлайн он не работает

 

Давид МейстерМастер (2054) 2 недели назад
 function audio(path, play = true) {
var searchAudio = $(`audio[src="${path}"]`).filter(function () {
return this.paused;
});
var audio = (searchAudio.length) ? searchAudio[0] : new Audio(path);
// if ($('audio').length > 10) $('audio').slice(0, 5).remove();
$('#root').append(audio);
audio.volume = (audioStatus) ? globalVolume : 0;
if (play) audio.play();
return audio;
}
Редис АлександровичОракул (77672) 2 недели назад
Великолепные были времена!
Похожие вопросы