javascript - HTML5 在 javascript 中设置音频源不起作用

标签 javascript jquery html

由于 HTML5 浏览器格式技巧,我必须将后备音频格式也放入音频格式中。我想以编程方式在音频中设置源的 src,但它不起作用。

这是我的 HTML 代码:

<audio id="audioPlayer" width="400" height="30" controls="controls">        
    <source id="oggSource" type="audio/ogg" />
    <source id="mp3Source" type="audio/mp3" />
</audio>

然后在 javascript 中使用 jquery 我为它们中的每一个设置源(我有一个音频标签和页面上的许多 mp3 并且基于某些事件我想更改音频标签的源)所以我不能直接指定 src在音频中,主要是因为我需要后备支持,而且我需要动态。

我使用 jquery 操作 src:

$('#oggSource').attr('src', 'OggFormat.ogg');
$('#mp3Source').attr('src','Mp3Format.mp3');

但是这不起作用。知道为什么吗?

如果我使用:

<audio id="audioPlayer" width="400" height="30" controls="controls">        
    <source id="oggSource" type="audio/ogg" src="OggFormat.ogg" />
    <source id="mp3Source" type="audio/mp3" src="Mp3Format.mp3"/>
</audio>

它可以工作,但根据我的需要,我需要在代码中设置它而不是静态提供。

最佳答案

使用 .detach().appendTo(parent)似乎有效:http://jsfiddle.net/pimvdb/b7Jgh/ .

$("#oggSource").attr("src", "foo.ogg").detach().appendTo("#audioPlayer");

我猜浏览器只有在出现 autoplay 时才开始加载(并播放 <source> )元素是添加的,而不是刚刚修改的时候。我不确定为什么,但在分离工作后附加它。


编辑:您也可以直接执行 .appendTo因为一个元素是唯一的(即它无论如何都必须分离):http://jsfiddle.net/pimvdb/b7Jgh/6/ .

function updateSource(source, src) {
    source = $(source);
    source.attr("src", src).appendTo(source.parent());
}

关于javascript - HTML5 在 javascript 中设置音频源不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928562/

相关文章:

jquery - 有什么方法可以将一些 html/css 导出到图像吗?

Jquery Innerfade 插件覆盖 CSS

html - 使用纯 CSS 显示/隐藏元素的单个按钮

html - 宽度问题 :50% when border ! = 无 (CSS)

jquery - 同样的悬停和焦点在来自不同 div 的两个对齐的表格上

javascript - 在 React 中重置组件的状态

javascript - 如果您知道选项值,如何从选择框中选择该值?

javascript - Canvas /JS : can't change the lineWith without altering previous line

javascript - 更新推特状态

javascript - .append() 和 .empty() 上的问题