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();
    }    
} 

Google Chrome では問題なく動作しますが、IE9 では問題が発生します。

canplaythroughイベントは、すべてのオーディオ タグに対して既にバインドされています。そのため、上記のコードを使用してオーディオ タグの currentTime を変更しているときに、すべてのオーディオ ファイルが完全にロードされた後でも、ブラウザ (IE9) がハングします。

それは同じことをする他の方法ですか?

4

0 に答える 0