vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)


Posted in Javascript onFebruary 25, 2020

对于vue-video-player,从github上找到一段代码,直接放页面!可以了,视频展示出来了!开始下一个功能。。。。

这可能是大部分前端开发者一贯的思维模式,拿来一个插件,看着demo就做出来了,功能展示正常就OK了,但是一旦出了bug,就会面向百度编程或者面向Google编程!

其实,我也是这样的,哈哈哈哈.....

废话不多说,最近在做一个视频播放的功能,找到vue-video-player插件后,咔咔咔完事,拿着我的爱疯,完美演绎!但是其他人的国产某牌手机,展示的完全不一样,打开后自动全屏,而且还有个横竖屏控制。“这是我写的页面?????”,心中一万只神兽在奔腾。横竖屏切换后,视频下的内容在全屏模式下展示了出来一部分。

百度了半天,看源码,还是不知道咋回事。

后来终于找到了解决办法:

之前:playsinline="playsinline"这里是true写死的,现在改为计算属性playsinline()

computed: {
  player () {
   return this.$refs.videoPlayer.player
  },
  playsinline () {
   let ua = navigator.userAgent.toLocaleLowerCase()
   // x5内核
   if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
    return false
   } else {
    // ios端
    return true
   }
  }
 }

添加playsinline()这个计算属性,原因是在安卓和iOS端微信使用的内核不同,所需要的attribute也不同,尝试后,采用x5内核返回false,反之为true

配合jq工具,继续添加两个端所需的属性 

@canplay="onPlayerCanplay($event)"
onPlayerCanplay (player) {
   var ua = navigator.userAgent.toLocaleLowerCase()
   // x5内核
   if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
    $('body').find('video').attr('x-webkit-airplay', true).attr('x5-playsinline', true).attr('webkit-playsinline', true).attr('playsinline', true)
   } else {
    // ios端
    $('body').find('video').attr('webkit-playsinline', 'true').attr('playsinline', 'true')
   }
  },

至此,完美解决安卓端微信播放时,横竖屏的播放样式错乱和播放时视频内容未自适应。

为兼容ios横屏将视频旋转90度

methods: {

// 视频宽高设置为手机宽高
    videoFullScreen() {
      let width = document.documentElement.clientWidth;
      let height = document.documentElement.clientHeight;
      document.getElementById('video_content').style.height = width + 'px';
      document.getElementById('video_content').style.width = height + 'px';
    },
  }
/*视频旋转*/
.video_box_rotate{

  transform rotate(90deg)
}

视频监听播放结束、进入全屏、退出全屏事件

mounted() {this.videoEnd()},
methods: {
  videoEnd(){


let video = document.getElementById('video_content');



video.addEventListener('ended', () => {




alert('video end')



});


}; // 视频播放结束
}
// 全屏事件 x5videoenterfullscreen
// 退出全屏 x5videoexitfullscreen

监听手机横竖屏

window.addEventListener('orientationchange', function() {
          // alert(window.orientation); // 这里可以根据orientation做相应的处理
          if (window.orientation === -90) {
            self.iphoneScreenShow = true;
          } else {
            self.iphoneScreenShow = false;
          }
        }, false);

到此这篇关于vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)的文章就介绍到这了,更多相关vue-video-player 自动全屏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
没有document.getElementByName方法
Aug 19 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
ExtJS实现文件下载的方法实例
Nov 09 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
通过js实现压缩图片上传功能
Feb 25 #Javascript
Vue实现简单计算器案例
Feb 25 #Javascript
使用Vue实现简单计算器
Feb 25 #Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 #Javascript
Vue实现简易计算器
Feb 25 #Javascript
js+canvas实现简单扫雷小游戏
Jan 22 #Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 #Javascript
You might like
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php 购物车实例(申精)
2009/05/11 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
python元组操作实例解析
2014/09/23 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python错误的处理方法
2020/06/23 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
小学班主任培训方案
2014/06/04 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
村官个人总结范文
2015/03/03 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书