我想创建一个播放3个连续音频文件的应用程序(非常小的文件,只需900毫秒),所以我写了这些代码:
function playAudio() {
audioLinksArray.forEach(function(audioLink, index, array){
setTimeout(function(){
// Find the audio element to play
document.getElementById('audio'+index).play();
}, 900*index);
});
}
这在桌面浏览器中运行良好(我在Chrome,Safari,FireFox,Opera上测试过)。但是,当我在iPhone上打开Safari时,它只播放前两个音频文件,并留下最后一个未播放的音频文件。究竟发生了什么,我该怎么做才能解决这个问题?
答案 0 :(得分:0)
你可以试试这个:
audioLinksArray = [0, 1, 2]
function playAudio() {
var last = audioLinksArray.length - 1;
var audioElements = new Array(last + 1);
audioLinksArray.forEach(function(audioLink, index, array){
var audio = audioElements[index] = document.getElementById('audio' + index);
if (index === last) return;
audio.addEventListener('ended', function () {
audioElements[index + 1].play();
});
if (!index) audio.play();
});
}
<audio controls id="audio0" src="//upload.wikimedia.org/wikipedia/commons/f/f6/Voice_of_Zonotrichia_albicollis.ogg"></audio><br>
<audio controls id="audio1" src="//upload.wikimedia.org/wikipedia/commons/6/68/Turdus_merula_male_song_at_dawn%2820s%29.ogg"></audio><br>
<audio controls id="audio2" src="//upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg"></audio><br>
<button onclick="playAudio()">Play all</button>