JavaScript中的HTML5音频:我做错了什么?

时间:2011-06-05 06:36:34

标签: javascript html5 audio

我正在尝试在Javascript中创建HTML 5音频标记。我无法让它工作和预加载:

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(pc)

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 个答案:

答案 0 :(得分:2)

<source>个元素不能包含属性preload,而您忘记在音频对象的preload属性周围添加引号。

因此,请从setAttribute('preload', 'auto')个对象中移除sourceX并在preload属性周围加上引号,如下所示:

audioElement.preload = 'auto';