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 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
简单理解js的冒泡排序
Dec 19 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 Javascript
Javascript异步执行不按顺序解决方案
Apr 30 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
通过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
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
php动态函数调用方法
2015/05/21 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
javascript multibox 全选
2009/03/22 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
深入理解Python分布式爬虫原理
2017/11/23 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python守护进程实现过程详解
2020/02/10 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
xxx同志考察材料
2014/02/07 职场文书
九不准学习心得体会
2016/01/23 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL