由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio, 因此我们通过一个用户交互事件来主动 play 一下 audio. 这个坑相信大家都已经踩过了, 在 iOS 9 没出现以前, 这样的 hack 方案还是妥妥的. 但 iOS 9 出现后, 发现这个方案"失效"了. 没有办法, 看来是时候升级一下 hack 方案了, 于是仔细看了下 audio 的事件. 对于能够自动播放时事件的顺序如下 loadstart -> loadedmetadata -> loadeddata -> canplay -> play -> playing 对于不能自动播放时触发的事件因系统版本不同而不同 * iPhone5 iOS 7.0.6 loadstart * iPhone6s iOS 9.1 loadstart -> loadedmetadata -> loadeddata -> canplay 最终发现相比原来的 hack 方案, 对于 iOS 9 还需要额外的 load 一下, 否则直接 play 不能让 audio 开始播放.     audioEl.load(); // iOS 9     audioEl.play(); // iOS 7/8 仅需要 play 一下 完整的代码请查看 fake-autoplay-audio-ios-safari.html Fake auto play html audio in iOS Safari the right way

在 iOS Safari 中假装自动播放 HTML5 audio(音乐) 的正确方式

核心原理: 通过一个用户交互事件来主动 play 一下 audio