Аудио HTML5 в JavaScript: что я делаю не так?

#javascript #html #audio

#javascript #HTML #Аудио

Вопрос:

Я пытаюсь создать аудио-тег HTML 5 в Javascript. У меня возникли проблемы с запуском и предварительной загрузкой:

 var audioElement = document.createElement('audio');

var source1 = document.createElement('source');
source1.type= 'audio/ogg';
source1.src= 'assets/audio/ost.ogg';
source1.setAttribute("preload","auto");
audioElement.appendChild(source1);

var source2 = document.createElement('source');
source2.type= 'audio/mpeg';
source2.src= 'assets/audio/ost.mp3';
source2.setAttribute("preload","auto");
audioElement.appendChild(source2);

audioElement.preload = auto;
audioElement.load();
  

Есть идеи?

Спасибо.

Редактировать:

Вот что я в итоге сделал для тех, кому интересно. Работает в FF3.6, ff4, safari 5, ie9, chrome 11, opera 11.11 (ПК)

 var audioElement = document.createElement('audio');
audioElement.setAttribute("preload", "auto");
audioElement.autobuffer = true;

var source1 = document.createElement('source');
source1.type= 'audio/ogg';
source1.src= 'assets/audio/ost.ogg';
audioElement.appendChild(source1);

var source2 = document.createElement('source');
source2.type= 'audio/mpeg';
source2.src= 'assets/audio/ost.mp3';
audioElement.appendChild(source2);
  

И затем:

 audioElement.load();
  

Спасибо за твою помощь, Кевин.

Ответ №1:

<source> у элементов не может быть атрибута preload , и вы забыли заключить в кавычки свойство предварительной загрузки вашего аудиообъекта.

Итак, удалите setAttribute('preload', 'auto') из ваших sourceX объектов и заключите preload атрибут в кавычки, вот так:

 audioElement.preload = 'auto';
  

Комментарии:

1. @Yahreen Я не уверен, поддерживает ли 3.6 предварительную загрузку.