如何在iPhone中的Safari中制作音频逐个运行多个音频?

时间:2017-04-14 16:43:11

标签: javascript mobile-safari html5-audio

我想创建一个播放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时,它只播放前两个音频文件,并留下最后一个未播放的音频文件。究竟发生了什么,我该怎么做才能解决这个问题?

1 个答案:

答案 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>