【问题标题】: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();

感谢您的帮助,凯文。

【问题讨论】:

    标签: javascript html audio


    【解决方案1】:

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

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

    audioElement.preload = 'auto';
    

    【讨论】:

    • @Yahreen 我不确定 3.6 是否支持预加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2011-06-01
    • 1970-01-01
    • 2015-08-26
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多