解決移動端音頻自動播放問題

來源:互聯網
上載者:User

標籤:

<audio id="audio" autoplay=‘autoplay‘ loop=‘loop‘>
<source src="SeeYou.mp3" type="audio/ogg">
<source src="SeeYou.mp3" type="audio/mpeg">
</audio>

 在開發webapp時,有時候你可能要加點背景音樂,這時我們會用到HTML5音頻Audio。

 


做完後我們放PC端測試可以完美的進行自動播放(當然,是在你瀏覽器支援的情況下)。然後拿手機來試試看,你會發現有些手機裡可以自動播放,而有些不能。這是為什麼呢?這是因為有些手機瀏覽器把這個自動播放的功能給禁掉了。查閱資料可以知道,在safri on ios裡面已經明確指出等待使用者的互動動作後才能播放media,也就是說如果你沒有得到使用者的action就播放的話就會被safri攔截。
看到這裡一般很多人以為這樣可以解決:

 

var audio = document.getElementById(‘audio‘);window.onload=function(){    audio.play();}

其實這樣你還是沒有和瀏覽器進行互動的,是不行的。
那麼我們還有其它的解決方案嗎?其實有個障眼法的解決方案:
在我們一般開啟手機網站,我們的手指是不是會不經意的就碰到了螢幕,想到這裡,這樣我們就可以給html或body添加個這樣的事件:

 

$(‘html‘).on(‘touchstart‘,function(){audio.play();});

 

 這樣就OK了。但我們有可能會加個按鈕來控制音樂的開關。這樣後面發現,我可能不想聽這背景音樂,只想靜靜的瀏覽頁面,當我點擊關閉音樂按鈕後,我繼續瀏覽頁面,這時手碰到了螢幕,聲音又播放了,可是我之前關閉音樂就是為了不想它播放,顯然這樣是不好的,所以感覺要用one()才更合適,讓它只能運行一次該事件處理函數。

$(‘html‘).one(‘touchstart‘,function(){    audio.play();});

 

解決移動端音頻自動播放問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.