本人小白全棧一枚,給公司寫了一個監控中心,要求嚴重報警的時候需要觸發音頻播放,於是就有了以下的折騰。
剛開始一切都很順利,自然而然的寫了以下代碼。
<audio id="myaudio" > <source src="/static/warn.mp3" type="audio/mpeg"> </audio> <script> var tt; function audioPlay(){ document.getElementById("myaudio").play(); tt = setTimeout(audioPlay, 5000); } function audioLoad(){ document.getElementById("myaudio").pause(); } </script> // 觸發播放 audioPlay(); //清除定時任務 clearTimeout(tt);
隨意在PC端測試了下,完美,然后我就沒管它了....直到有一天,一時興起拿起手機打開來看,結果發現沒聲音。PC端是正常的,沒理由手機不行,初步懷疑是瀏覽器音頻兼容性問題。
經過多方查證,居然是移動端做了限制,一定要用戶交互才能觸發,網上的解決方案大多是通過touchstart事件。
附上一個簡單的JS做參考
https://github.com/MauriceButler/simple-audio
至於最終的解決方案..因為我這邊只是內部使用,所以選擇了萬能的谷歌瀏覽器
chrome://flags/#disable-gesture-requirement-for-media-playback
開啟這個flags完美解決。