這幾天做移動端的音樂播放,果然是踩坑不斷呀!
其中一個就是,做好的播放功能,在pc上可用,在手機上的殼子瀏覽器可用,可偏偏在原生瀏覽器和chrome上不行。
折騰了好久(主要還是移動端的調試真心不方便呀),最終定位到問題是:
移動端一個audio對象的第一次播放,必須是一個用戶觸發的行為。
至少在我目前4.3的三星s4的原生瀏覽器和chrome31上是這樣的,相信在以后的版本上也會是這樣。
所以對於異步獲取播放的資源鏈接再進行播放的實現,在這兩個瀏覽器上就會失效。
解決方法:
既然不能異步,最簡單的方法就是換成同步唄。當然,這對於項目來說是不現實的……
上面提到,這個限制對於同一個audio對象,只在其初次播放時需要用戶行為觸發,之后就可以隨心所欲的操作了。
所以我所用的方法就是:
全局使用同一個audio對象,並且在用戶第一次點播放的時候,在同步階段,用一個空的音樂(沒有聲音,播放時長1s)先進行播放,等獲取到異步結果后再進行src的替換就行了。