我正在React中制作一个计时器应用程序。每当计时器倒数至0时,它应播放一个wav声音文件。在IE,Chrome,Edge,Android上运行正常,但在iOS上无法正常运行。
我找到了一个解释为什么会发生这种情况,但没有找到解决方法。
在iOS上的Safari(适用于包括iPad在内的所有设备)上,该用户可能位于蜂窝网络上,并按数据单元收费,因此禁用了预加载和自动播放功能。在用户启动数据之前,不会加载任何数据。这意味着除非用户操作触发了play()或load()方法,否则JavaScript play()和load()方法在用户启动播放之前也处于无效状态。换句话说,用户启动的“播放”按钮有效,但onLoad =“ play()”事件无效。 (Source: Apple Developer)
<audio id="beep" src="http://www.pacdv.com/sounds/interface_sound_effects/sound106.wav"></audio>
startTimer = () => {
document.getElementById('beep').play();
}
启动计时器功能在计时器达到0时运行,而不是在单击事件上运行。计数到0时,预期结果将是在iOS上播放音频。