Обнаружение поддержки MP3 на странице для старого браузера

Я пишу mp3-плейлист, и почти закончил... но я хотел бы сделать страницу совместимой со старым браузером (люди со старыми браузерами увидят простой список ссылок на mp3: они могут скачать их, это не проблема). Теперь, боюсь, у меня проблемы с синтаксисом javascript, а не с какой-то конкретной командой. Итак, это мой код:

ilikemp3 = 0;

if (document.createElement('audio').canPlayType('audio/mpeg;codecs="mp3"'))
{ilikemp3 = 1};

if (ilikemp3)
{audio_playlist_html5()}
else
{simple_audio_list()};

Он отлично работает в современных браузерах... но если я запускаю его в старых браузерах, я получаю сообщение об ошибке:

Ошибка: document.createElement("audio").canPlayType не является функцией

Итак, я понимаю, что это неправильный способ запроса браузера. Кто-нибудь может мне помочь? Большое спасибо!


person Felice Mifappo    schedule 06.02.2020    source источник


Ответы (1)


Вы можете проверить наличие canPlayType в document.createElement('audio') и принять решение на основе этого.

if('canPlayType' in document.createElement('audio')) {
  //new player
}
else {
  //old player
}
person Tanner    schedule 06.02.2020
comment
ДАСССССССССС!!! Это работает!!! Спасибо вам большое... вы молодцы! - person Felice Mifappo; 07.02.2020
comment
Это не очень хорошее решение... или, по крайней мере, неполное. Старые браузеры на основных платформах могли нормально декодировать MP3 даже без поддержки canPlayType. Единственный способ проверить это — попробовать поиграть и посмотреть, что получится. - person Brad; 07.02.2020
comment
@Brad Не могли бы вы уточнить больше? Мой ответ относится к вопросу, который задает ОП, учитывая предоставленную информацию. Я предполагаю, что лучшим маршрутом будет попытка/поймать audio_playlist_html5() и вернуться к simple_audio_list(), когда он выдаст? - person Tanner; 07.02.2020
comment
Объект Audio все равно будет создан, даже если браузер не обязательно сможет воспроизвести файл с определенным кодеком. Я бы просто обработал событие error этого аудиоэлемента и, когда это произойдет, покажу альтернативный список. Если пользователь идет играть, а игра по какой-то причине не работает, загрузки все равно могут происходить. - person Brad; 07.02.2020