今天小編和大家分享個在日常追劇中有關(guān)的內(nèi)容:“怎么在HTML5頁面中讓音頻自動播放?”這方面的相關(guān)內(nèi)容我們在下面都有,希望對大家有所幫助!
下面有三種常規(guī)的方式,可以創(chuàng)建自動播放的audio對象:
第一種:頁面上創(chuàng)建一個audio標(biāo)簽,寫好相關(guān)的屬性,如:autoplay='autoplay',正常情況下,這里寫上資源地址之后,訪問頁面之后就可以自動播放了。但是如果音樂資源地址不確定,需要js改變的話,就需要使用JS來實現(xiàn)了。
(function() {
var audio = document.getElementById('myAudio1');
audio1 = audio;
audio.src = source;
audio.loop = true;
audio.autoplay = true;
audio.play();
audio.addEventListener('canplay', canPlay, false);
})();
第二種:和第一種比較相似,只不過所有的標(biāo)簽都是JS創(chuàng)建之后,插入到頁面上的。、
(function() {
var audio = document.createElement("AUDIO");
audio2 = audio;
audio.setAttribute("src", source);
audio.setAttribute("loop", 'true');
audio.setAttribute("controls", 'controls');
audio.setAttribute("autoplay", 'true');
audio.setAttribute("id", 'myAudio2');
audio.addEventListener('canplay', canPlay, false);
document.getElementById('example2').appendChild(audio);
audio.play();
})();
第三種:沒有任何dom標(biāo)簽,使用JS創(chuàng)建一個audio對象,然后通過JS控制audio對象的各種api實現(xiàn)資源更換和自動播放。
(function() {
var audio = new Audio();
audio3 = audio;
audio.src = source;
audio.loop = true;
audio.id = 'myAudio3';
audio.autoplay = true;
audio.addEventListener('canplay', canPlay, false);
audio.play();
})();
附:上述三個方法的demo
另外增加一種第三方庫實現(xiàn),音頻資源的播放以及控制?!?整理了一些第三方庫,功能不只是播放音樂,還有一些其他功能,這個自己研究。
howler.js: http://goldfirestudios.com/blog/104/howler.js-Modern-Web-Audio-Javascript-Library
buzz.js: http://buzz.jaysalvat.com/
audio.js: http://kolber.github.io/audiojs/
jPlayer.js: http://jplayer.org/
使用了上述方法之后,發(fā)現(xiàn)在Iphone手機(jī)(詳細(xì)說明)和部分android手機(jī)仍然不能,自動播放。
他的播放條件是:必須有用戶行為操作,才能進(jìn)行播放。
所以就需要考慮,通過什么樣的方式可以模擬用戶的操作呢?網(wǎng)絡(luò)上提供了一些方式,可以實現(xiàn)自動播放,如:
- 創(chuàng)建一個Image對象,然后監(jiān)聽Image是否加載完畢,如果加載完畢,執(zhí)行audio的播放,達(dá)到自動播放效果
- 一個類似的方法, 創(chuàng)建一個iframe,資源直接就是音頻資源的地址,iframe加載完畢就能自動播放
- 給document或者body綁定一個touchstart事件,這樣用戶只要觸碰到頁面就可以觸發(fā)播放
上述提到的前兩條,我測試發(fā)現(xiàn)基本上沒有效果。至于第三條,這個肯定是沒有問題的,但是這種方式確實不完全算是自動播放,因為完全有可能用戶就是不觸碰頁面,那么就是不會播放。但是在有些場景下,確實可以使用,這個要區(qū)分場景。
進(jìn)而我想到了,能不能監(jiān)聽手機(jī)是否運(yùn)動或者是移動,來進(jìn)行播放音頻呢?我監(jiān)聽了devicemotion(詳細(xì)說明)事件,發(fā)現(xiàn)還是不行,此時我已經(jīng)凌亂了,死的心都有了。
最后的最后,我使用了在頁面上創(chuàng)建audio標(biāo)簽,使用JS調(diào)整audio相關(guān)屬性和值,然后控制音頻播放。
這種方式基本上,可以在不同的手機(jī)上表現(xiàn)出相同的效果,但是就是我測試的一個5S手機(jī)就是不行。。。同樣別的5S卻沒有問題,具體原因到現(xiàn)在都沒有查出來我就默默的把他忽略了。
為了能讓哪些不能自動播放的提升一些體驗,又綁定了一個touchstart事件,這樣就算是不能自動播放,至少可以在觸摸頁面的可以進(jìn)行播放,算是一種體驗改進(jìn)吧。
補(bǔ)充: 2015年05月31日iOS 微信 音頻 視頻自動播放
以上就是有關(guān)于:“怎么在HTML5頁面中讓音頻自動播放?代碼分享!”這方面的相關(guān)內(nèi)容分享,想必大家在學(xué)習(xí)過后對于html5音頻播放這方面也有了自己的見解,當(dāng)然更多與html5相關(guān)的知識我們都可以在W3Cschool中進(jìn)行學(xué)習(xí)和了解!