Javascript音频可以在浏览器中播放,但不能在iOS设备上播放

Javascript audio plays in browser but not on iOS device

本文关键字:播放 iOS 但不能 音频 浏览器 Javascript      更新时间:2023-09-26

我有以下代码从数组中播放音频文件

function playSound() {
    if(index>=25){
        index = 0;
}
document.getElementById("sound").innerHTML=
"<embed src='""+audio[index]+"'" hidden='"true'" autostart='"true'" loop='"false'" />";
index++;
}

音频在我的笔记本电脑上播放得很好,但在iOS设备上播放不了。代码由以下HTML

触发
<button id="newWordBtn" class="play" onclick="playSound(); $('#result').empty(); $('#yourTurn').val(''); myFunction();" data-icon="refresh" tabindex="3">New Word</button>

有什么办法让它工作吗?我知道iOS不允许自动播放,但是这个声音是由一个按钮触发的。

许多移动浏览器不处理<embed>标签。此外,您没有显示源文件,但我敢打赌您使用的是MP3文件——这对于支持MP3的浏览器来说很好,但对于那些不支持MP3的浏览器来说……是的。

你应该像这样结束:

<audio autostart>
    <source type="audio/ogg" src="mySong.ogg" />
    <source type="audio/mpeg" src="mySong.mp3" />
    <p>Your browser does not support HTML5 audio. Sorry!</p>
</audio>

不幸的是,iOS将每个网页的音频/视频对象锁定为1,所以一旦你加载了那个,你就已经使用了你的那个。这将无声地杀死你想要同时播放的所有其他声音文件。我花了几个星期的时间通过javascript让多轨音频在iOS上工作,到目前为止,对我来说最好的解决方案是Web audio API。我附上了一个教程,希望对大家有用