我目前正在尝试在我的网站上播放不同的wav文件。我目前正在使用HTML5 <audio>
元素,但我也试图获得一些向后兼容性,因为IE不会通过音频标签播放wav。
我创建了一个javascript函数,可以创建适当的声音<embed>
对象:
function createPreHtml5EmbedItem(callID, parent) {
$("#sound").remove();
var sound = $("<embed id='sound' controls='console' type='audio/wav' />");
sound.attr('src', '/recording?id=' + callID);
sound.attr('loop', false);
sound.attr('hidden', false);
sound.attr('autostart', true);
parent.append(sound);
}
这一切都很好,但当我点击一个不同的按钮时,我想停止播放这个音频元素。在Firefox中,我可以这样做:
function stopAudioPreHtml5() {
$("#sound").remove();
}
但由于某种原因,这在IE中不起作用。有没有办法在删除之前停止当前播放的<embed>
元素?
答案 0 :(得分:5)
对于IE,您可以使用.stop()
方法来停止它。
的 The DEMO. 强> 的
function stopAudioPreHtml5() {
var sound = $("#sound");
if ($.browser.msie) {
sound[0].stop();
}
sound.remove();
}
答案 1 :(得分:1)
也许把你的Soundfile放在iframe中,用jquery删除整个iframe?!
答案 2 :(得分:0)
function createPreHtml5EmbedItem(callID, parent) {
$("#sound").remove();
var sound = $("<embed id='sound' controls='console' type='audio/wav' />");
sound.attr('src', '/recording?id=' + callID);
sound.attr('loop', false);
sound.attr('hidden', false);
sound.attr('autostart', true);
$(parent).append(sound);
}
更改了附加行,对我来说效果很好。顺便说一下,如果你使用.stop(),如果你在页面上有这么多的嵌入对象,它将导致性能问题。但是remove()不会。
答案 3 :(得分:0)
当我有一个与javascript变量名相同的元素时,我在IE中遇到了问题。
在这种情况下,您的变量sound
和您创建的ID为sound
的元素
在创建并向对象添加所有属性(例如
)时,我会尝试使用不同的变量名var soundIE = $("<embed id='sound' controls='console' type='audio/wav' />");
soundIE.attr('src', '/recording?id=' + callID);
soundIE.attr('loop', false);
soundIE.attr('hidden', false);
soundIE.attr('autostart', true);
$(parent).append(soundIE);