複数のオーディオタグを使用し、それらすべてを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) がハングします。
それは同じことをする他の方法ですか?