ios audio不可以正常播放

ios中audio不能直接經過audio.play()播放,須要用戶在click事件或者touch事件中執行audio.play()才能播放。vue

ajax回調中audio.play()音樂不能正常播放。

用戶點擊按鈕,等服務器返回數據後再播放相應的成功或失敗的音樂,測試在ios中不能正常播放。猜想ios中的audio不能再ajax回調函數中play()ios

下面記錄一下ios中ajax回調中播放音樂的問題解決過程

  • 解決方案一 --下降音量ajax

在用戶點擊時間後將audio的音量設置爲0,等success後將音量設置爲1; volume能夠控制audio的音量大小,取值範圍爲 0~1chrome

audio.volume=number

發如今chrome的手機模式能夠將音樂靜音,ios中居然不能控制音量,好吧這個被ios屏蔽了。放棄了。。。服務器

  • 解決方案二 --播放後當即暫停函數

用戶點擊按鈕後當即播放音樂,等ajax返回數據後再繼續播放。測試可以正常播放。部分代碼以下:測試

// 用戶click事件
if (this.isIOS()) {          // ios單獨處理 安卓不須要
  this.$refs.audio.play()
  this.$refs.audio.pause()
}

// ajax成功後的事件
  this.$refs.audio.pause()
  this.$refs.audio.currentTime = 0
  this.$refs.audio.play()

因爲是vue項目,因此代碼中有this.$refs小夥伴們別介意;this

總結

  1. 在ios中,若是須要播放音樂或者視頻,須要用戶手動觸發事件在調用.play()才能播放(autoplay或者直接.play()是不能直接觸發的);code

  2. 若是須要在ajax回調函數中播放音樂,須要在用戶觸發事件後播放音樂當即暫停而後才能在回調函數中.play(),否則ios中是播放不成功的。視頻

相關文章
相關標籤/搜索