/** * VIDEOJS补充插件,需要放到VIDEOJS之后引入 * 使用方法:引入jQuery,引入VIDEOJS和VIDEOJSMOD的对应CSS和JS文件,之后调用如下代码: * $.videojsMod('视频地址'); */ (function(jQuery){ let player = null; //禁止页面滚动的handler function _moveHandler(e){ e.preventDefault(); } jQuery.extend({ videojsModMobile: function(videoURL){ //首先如果当前有其他视频已经实例化了,则销毁 if(player != null && player.isDisposed_ == false){ player.dispose(); } //一定要获取到页面的尺寸信息,不然不执行下面所有操作 if(window._resizeInfo){ //拼接一个VIDEO标签到页面中 jQuery('body').append(`
`); jQuery('.videojsMod_videoPlay').append(` `); //注册关闭播放器事件 jQuery('.videojsMod_videoCloseBtn').off('click'); jQuery('.videojsMod_videoCloseBtn').on('click',()=>{ player.dispose(); jQuery('.videojsMod_videoPlayMask').remove(); jQuery('.videojsMod_videoPlay').remove(); //恢复页面滚动 document.body.removeEventListener('touchmove',_moveHandler,{passive:false}) }); //初始化播放器,宽度和设备宽度相同 const boxWidth = window._resizeInfo.deviceWidth; if(boxWidth!=undefined && !isNaN(boxWidth)){ //播放窗口比例是16:9 const boxHeight = Math.round(boxWidth/16*9); player = videojs(document.querySelector('.video-js'),{ language:'zh-CN', controls:true, autoplay:true, preload:'metadata', height:boxHeight, width:boxWidth, controlBar:{ pictureInPictureToggle:false, remainingTimeDisplay:false } }); //计算出视频盒子需要的高度,让视频盒子定位准确,由于水平是100%设备宽度,因此只需要计算垂直坐标即可 let availHeight = document.documentElement.clientHeight; let offsetY = Math.round((availHeight - boxHeight)/3); jQuery('.videojsMod_videoPlay').css({top:`${offsetY}px`}); } //绑定自定义事件 //禁止页面滚动 document.body.removeEventListener('touchmove',_moveHandler,{passive:false}) document.body.addEventListener('touchmove',_moveHandler,{passive:false}); //添加点击视频暂停/继续播放功能 player.on('ready',function(){ $('body').off('touchstart','.video-js'); $('body').on ('touchstart','.video-js',function(){ if(player.paused()){ player.play(); }else{ player.pause(); } }); }); //最后展示视频 jQuery('.videojsMod_videoPlayMask').show(); jQuery('.videojsMod_videoPlay').show(); } } }); })($);