鍍金池/ 問(wèn)答/HTML/ 微信播放音樂(lè) 為什么在wx.ready后執(zhí)行就可以正常播放了

微信播放音樂(lè) 為什么在wx.ready后執(zhí)行就可以正常播放了

微信IOS中自動(dòng)播放聲音 是被禁止的。除非用戶主動(dòng)觸發(fā)。

但是用了微信jsdk后 就可以在 wx.ready()里 控制播放了。

//第一步:首先加載一個(gè)微信JS-SDK
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

//第2步:寫一些配置
<script>
function autoPlayAudio() {
        wx.config({
            // 配置信息, 即使不正確也能使用 wx.ready
            debug: false,
            appId: '',
            timestamp: 1,
            nonceStr: '',
            signature: '',
            jsApiList: []
        });
        wx.ready(function() {
            var globalAudio=document.getElementById("audio標(biāo)簽id");
            globalAudio.play();
        });
};

// 解決ios音樂(lè)不自動(dòng)播放的問(wèn)題
autoPlayAudio();

問(wèn)題是微信做了什么?為什么在wx.ready后就可以自動(dòng)播放了。其內(nèi)幕是啥?。

ready的源碼:

ready =function (a){0!=G.state?a():(F._completes.push(a),!w&&E.debug&&a())}
回答
編輯回答
蟲児飛

光看JS代碼是看不出來(lái)的。所有JS代碼都需要瀏覽器解釋執(zhí)行。微信內(nèi)嵌的瀏覽器是經(jīng)過(guò)微信改造的,屏蔽了很多功能。例如這里的play函數(shù),同樣的代碼放到Safari瀏覽器里就能夠自由調(diào)用,但在微信瀏覽器里就不能調(diào)用,明顯是被微信禁止了的,但是你得到微信授權(quán)之后,它就允許你調(diào)用了,這是微信控制網(wǎng)站開發(fā)者的一個(gè)手段,理由總是以安全為借口的。

2017年8月13日 12:10