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

Posted

技术标签:

【中文标题】JavaScript 中的 HTML5 音频:我做错了啥?【英文标题】:HTML5 Audio in JavaScript: What am I doing wrong?JavaScript 中的 HTML5 音频:我做错了什么? 【发布时间】:2011-06-05 06:36:33 【问题描述】:

我正在尝试在 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】:

<source> 元素不能具有 preload 属性,并且您忘记在音频对象的 preload 属性周围加上引号。

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

audioElement.preload = 'auto';
MDC Audio element MDC Source element

【讨论】:

@Yahreen 我不确定 3.6 是否支持预加载。

以上是关于JavaScript 中的 HTML5 音频:我做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HTML5 中的视频中提取音频?

我应该如何使用 JavaScript/HTML5 处理繁重的音频负载?

如何删除 HTML5 音频标签中的下载选项?

如何通过 HTML 5 中的 <audio> 标签使用 javascript 使用选定的音频文件?

使用 Javascript 播放音频元素 (html5)

暂停视频不会停止 html5 视频标签中的音频