移動端Web音樂無法自動播放的問題
阿新 • • 發佈:2018-12-19
關於移動端Web音樂自動播放的問題,可以分為三種:
- 支援audio的autoplay,大部分安卓機子的自帶瀏覽器和微信,大部分的IOS微信(無需特殊解決)
- 不支援audio的autoplay,部分的IOS微信 (解決ios下的微信開啟的頁面背景音樂無法自動播放)
- 不支援audio的autoplay,部分的安卓機子的自帶瀏覽器(比如小米)和ios safari(只能做使用者觸屏時觸發播放,本文介紹)
原因
- 微信的js api是建立在微信內建瀏覽器的私有物件WeixinJSBridge上,在微信中開啟頁面的話會初始化這個物件,當這個物件準備好的時候,會丟擲WeixinJSBridgeReady這個事件,我們在這個事件的回撥中可以播放音樂。
- 以前的IOS是支援音訊自動播放的,但是在IOS4.2.1版本之後,蘋果不支援自動播放,為了使用者著想,禁止了autoplay和JS “onload” 載入播放,在此我們監聽使用者觸屏時觸發。更多資料見官方文件Safari Developer Library
解決辦法:
<audio src="bg.mp3" id="CW" autoplay preload></audio> jQuery(document).ready(function($) { audioAutoPlay('CW'); }); function audioAutoPlay(id){ var audio = document.getElementById(id), play = function(){ audio.play(); document.removeEventListener("touchstart",play, false); }; audio.play(); //相容微信 document.addEventListener("WeixinJSBridgeReady", function () { play(); }, false); //相容易信 document.addEventListener('YixinJSBridgeReady', function() { play(); }, false); document.addEventListener("touchstart",play, false); }