原文連結https://www.cnblogs.com/yalong/p/18214816
背景
app
內嵌了一個H5
頁面,頁面有個需求是點選某些按鈕就觸發聲音,於是就使用了audio
標籤,但是有個問題就是在ios
上,點選聲音會有短時間的延遲,然後才播放聲音
找了好幾種方案總算解決了
方案一
click
事件改為mouseup
事件
因為移動端存在click
的300
毫秒延遲,所以如果用click事件的話就會導致聲音播放必定是在300毫秒之後觸發的
但是改成mouseup
事件後,聲音播放的時間是縮短了點,但是還是有延遲
方案二
audio
進頁面就直接播放,不過音量設定為0,相當於在後臺一直靜音播放,要觸發播放的時候,把聲音進度設定為0,音量設定為1,播放完再把聲音設定為0
這種方案是個曲線救國的方案,雖然能解決,但是程式碼層面會麻煩,如果有多個音效的話,會比較耗效能
方案三
使用mouseup
,同時 把audio
改為audioContext
,完美解決
當然 audiContext
有相容性問題,但是如果只是用來播放聲音,沒使用他的高階特性的話,相容性一般是沒問題的
audioContext
瞭解更多可以看這裡:https://developer.mozilla.org/zh-CN/docs/Web/API/AudioContext