微信瀏覽器播放音頻的問題:preload屬性



測試工具:ios微信。

h5的Audio對象有個很重要的屬性:preload;preload 屬性規定是否在頁面加載后載入音頻。有4個值:
auto - 當頁面加載后載入整個音頻
meta - 當頁面加載后只載入元數據
none - 當頁面加載后不載入音頻
空字符串 - 等效於auto屬性

對於Audio對象,如果不需要展示播放界面,我們完全可以在js里構造這個對象:

var audio = new Audio;
audio.preload = 'none';//設置none屬性
//當點擊第一個div元素是播放音頻
document.getElementsByTagName('div')[0].addEventListener('click', function () {
	audio.play()
},false)

  

如果是考慮到初次加載頁面顯示快慢的問題,我們完全可以將preload設置為'none',這樣就不會在頁面首次加載的時候下載音頻資源。
以上做法在safari(手機瀏覽器)和chrome(電腦瀏覽器)里,沒有任何問題,打開chrome的network,發現頁面初始化確實不會加載音頻,只有當點擊的時候,調用auido的play()方法時,才會下載音頻。但是,事情並沒有那么順利,我們在ios的微信里,發現根本不播放音頻。解決辦法:
1.不設置preload值或者設置preload為auto,微信瀏覽器都可以播放,但是頁面音頻比較多,第一次都會加載,網頁速度慢。
2.在設置audio.preload = 'none',不提前加載的情況下:用微信內置的方法:

if(typeof WeixinJSBridge === 'object'){
	 WeixinJSBridge.invoke('getNetworkType', {}, function(e) {
        audio.play();
     });
}else{
	audio.play()
}

 

注意,網上有很多資料說要用:document.addEventListener("WeixinJSBridgeReady")。我測試的都不會觸發這個事件!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM