我正在开发多轨播放器,我在其中使用多个音频标签并使用 javascript 操作所有这些标签。 (见示例代码)
var audios = [];
var loading = 0;
AddNote("2C");
AddNote("2E");
AddNote("2G");
AddNote("3C");
AddNote("3E");
AddNote("3G");
AddNote("4C");
function AddNote(name) {
loading++;
var audio = document.createElement("audio");
audio.loop = true;
audio.addEventListener("canplaythrough", function () {
loading--;
if (loading == 0) // All files are preloaded
StartPlayingAll();
}, false);
audio.src = "piano/" + name + ".mp3";
audios.push(audio);
}
function StartPlayingAll() {
for (var i = 0; i < audios.length; i++)
audios[i].play();
}
当我尝试currentTime
使用以下代码进行更改时
function playfrom(time) {
for (var i = 0; i < audios.length; i++)
audios[i].pause();
audios[i].currentTime = time; //time in seconds
audios[i].play();
}
}
这在谷歌浏览器上运行良好,但在 IE9 上会产生问题。
canplaythrough
事件已为所有音频标签绑定。因此,即使在使用上述代码更改音频标签的 currentTime 时,所有音频文件都已完全加载,浏览器(IE9)也会挂起。
有没有其他方法可以做到这一点?