这个问题在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 { //... }
})