0

我正在开发多轨播放器,我在其中使用多个音频标签并使用 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)也会挂起。

有没有其他方法可以做到这一点?

4

0 回答 0