HTML5 audio 手机微信浏览器不自动播放

小程序可以内嵌网页啦!老板说我们的音频播放用网页做~
OK, 做就做!

于是本人按着文档开始撸代码:写 audio 标签,js 获取 audioEl , play 是播放, pause 是暂停,监听 timeupdate 事件,设置时间改 currentTime,一气呵成,完美!交工啦~

HTML5 audio 手机微信浏览器不自动播放_第1张图片
俺自定义的音频播放器

老板:有 BUG!我要的是一进入页面,就自动播放。

What? BUG?不自动播放?我用电脑 Chrome/Safari 都测试过,可以的呀!
找了一会儿确定不是代码逻辑的 bug, 开始找度娘了。看到了这个小哥哥的回答。感激!!

html audio 在 iPhone,iPad , Safari 浏览器不能播放是有原因滴
(在safari on ios里面明确指出等待用户的交互动作后才能播放 media,也就是说如果你没有得到用户的 action 就播放的话就会被 safri 拦截)

小哥哥给的解决方案是在用户第一次触摸屏幕(touchstart)的时候开始播放。
这这这... 有些奇怪的好嘛!我摸了一下屏幕,也没点播放按钮,咋就播放了...
所以,嘿嘿嘿... 砍掉了自动播放功能~

老板:有 BUG!我要的是播放时从 60s 处开始,你这咋从零开始播放咧?

What? BUG?从零播放?我在 play 里面加 audioEl.currentTime = 60 了呀!
原来是触发 play 事件的时候 audioEl 这个对象可能还没获取到。好办,监听 canplay 事件,在这里面赋值 audioEl.currentTime = 60 就解决啦~

    // 可以自动播放时正确的事件顺序是
    // loadstart
    // loadedmetadata
    // loadeddata
    // canplay
    // play
    // playing
   
    // 不能自动播放时触发的事件是
    // iPhone5  iOS 7.0.6 loadstart
    // iPhone6s iOS 9.1   loadstart -> loadedmetadata -> loadeddata -> canplay

你可能感兴趣的:(HTML5 audio 手机微信浏览器不自动播放)