ios系統上h5頁面播放audio標籤聲音有延遲問題處理

进军的蜗牛發表於2024-05-28

原文連結https://www.cnblogs.com/yalong/p/18214816

背景

app內嵌了一個H5頁面,頁面有個需求是點選某些按鈕就觸發聲音,於是就使用了audio標籤,但是有個問題就是在ios上,點選聲音會有短時間的延遲,然後才播放聲音
找了好幾種方案總算解決了

方案一

click事件改為mouseup事件
因為移動端存在click300毫秒延遲,所以如果用click事件的話就會導致聲音播放必定是在300毫秒之後觸發的

但是改成mouseup事件後,聲音播放的時間是縮短了點,但是還是有延遲

方案二

audio進頁面就直接播放,不過音量設定為0,相當於在後臺一直靜音播放,要觸發播放的時候,把聲音進度設定為0,音量設定為1,播放完再把聲音設定為0
這種方案是個曲線救國的方案,雖然能解決,但是程式碼層面會麻煩,如果有多個音效的話,會比較耗效能

方案三

使用mouseup,同時 把audio 改為audioContext,完美解決
當然 audiContext 有相容性問題,但是如果只是用來播放聲音,沒使用他的高階特性的話,相容性一般是沒問題的

audioContext 瞭解更多可以看這裡:https://developer.mozilla.org/zh-CN/docs/Web/API/AudioContext

相關文章