這個問題在iOS和安卓下都有,瀏覽器默認全屏播放視頻,解決辦法很簡單,給video加如下屬性就能夠解決:javascript
playsinline="true"
webkit-playsinline="true" //webkit內核
x5-playsinline="true" //X5內核
<video autoplay></video>
var video = document.getElementById("video"); if (window.WeixinJSBridge) { WeixinJSBridge.invoke('getNetworkType', {}, function (e) { video.play(); }, false); } else { document.addEventListener("WeixinJSBridgeReady", function () { WeixinJSBridge.invoke('getNetworkType', {}, function (e) { video.play(); }); }, false); } video.play();
<video src="http://xxx.mp4" x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-orientation="portrait" />
在微信中打開一個自動播放音樂的H5頁面,有一個容易忽略的問題,就是在不退出頁面的狀況下,後臺切出微信時,頁面的音樂仍在播放,這樣用戶體驗就比較差。試了一下,播放中的視頻在頁面切出時會自動中止播放,音樂則不會,須要手動處理。而在Android中騰訊X5瀏覽器處理的就比較完善了,播放中的音視頻在切出後臺時會中止播放而且切回頁面後自動續播。css
解決辦法:html
HTML5新提供的API:visibilitychangejava
顧名思義這是一個頁面可見性API,瀏覽器標籤頁被隱藏或顯示的時候會觸發visibilitychange事件,對應的能夠經過Document.visibilityState 只讀屬性來獲取當前標籤頁在瀏覽器中的激活狀態:android
visible: 頁面內容至少是部分可見。 在實際中,這意味着頁面是非最小化窗口的前景選項卡。
hidden : 頁面內容對用戶不可見。 在實際中,這意味着文檔能夠是一個後臺標籤,或是最小化窗口的一部分,或是在操做系統鎖屏激活的狀態下。
prerender : 頁面內容正在被預渲染且對用戶是不可見的(被document.hidden當作隱藏). 文檔可能初始狀態爲prerender,但毫不會從其它值轉爲該值。 註釋:瀏覽器支持是可選的。
unloaded : 頁面正在從內存中卸載。 註釋:瀏覽器支持是可選的。
因此要實現後臺切出時中止播放音樂經過監聽visibilitychange事件就能實現啦:css3
document.addEventListener('visibilitychange', function () {
// 用戶離開了當前頁面
if (document.visibilityState === 'hidden') { //... } // 用戶打開或回到頁面 if (document.visibilityState === 'visible') { //... }
});
//或者
document.addEventListener("visibilitychange", (e) => {
if (e.hidden) { //... } else { //... }
})