直接摆出一个视屏弹窗的vue组件代码
实现效果:
点击父组件中某个按钮后,打开视频弹窗,并且可以通过X按钮关闭
优点:
动态生成与销毁video标签,解决hls视频流数据一直在后台请求的问题,避免关闭弹框后,视频流数据传输仍在继续消耗资源。
实现的方法:
1.向外抛出了两个属性:visible和videoURL,visible用于控制弹窗组件的生成与销毁,控制核心是v-if;videoURL是用于接收外部点击后传入的视频地址
2.由于只能在updated上添加video标签的原因,只能将videojs代码写在updated上;引发的问题是,在关闭弹窗时,updated又会触发,进而又会触发一次videojs代码的执行,在此定义了一个参数statu,并通过取反来标识区分进入和退出时的updated

需要在html入口文件中添加如下配置,用于解析视频

<meta name="referrer" content="no-referrer">

组件代码:

<template><div class="box" v-if="visible"><span class="exit" @click="exit">X</span><div class="fadom"></div></div>
</template><script>
import videojs from 'video.js'
import 'videojs-contrib-hls'
export default {props: {visible: {type: Boolean,default: false},videoURL: {type: String,default: ''}},data () {return {player: null, // 接收定义的vedio,在销毁时使用statu: false}},updated () {this.statu = !this.statu  // 取反,标识区分进入和退出时的updatedif (this.statu) {this.video()}},methods: {exit () {this.player.dispose()  // vedio标签销毁,截止视频流的传输this.$emit('update:visible', false)},video () {let videoTag = nullconst fadom = document.getElementsByClassName('fadom') // 获取vedio标签存放的父节点,准备在该标签下添加生成vedio标签console.log(fadom)console.log(fadom.children)if (!fadom.children) {videoTag = document.createElement('video') //新建一个vedio标签videoTag.setAttribute('class', 'video-js vjs-default-skin box')videoTag.setAttribute('controls', true)videoTag.setAttribute('preload', 'auto')videoTag.setAttribute('src', this.videoURL)videoTag.setAttribute('width', '800px')videoTag.setAttribute('height', '600px')// 以上都是使用setAttribute方法给新生成的vedio标签添加属性,更多配置属性可以在vediojs官网上查看并添加fadom[0].appendChild(videoTag)  // 将新生成的vedio标签添加在预设好的父节点下}const options = {sources: [{src: this.videoURL, // 配置视频地址type: 'video/mp4'  // 配置解析的视频文件类型}]}this.player = videojs(videoTag, options, function () {this.play()  // 使用vediojs方法,实现视频播放的功能,videoTag是上面生成的新vedio标签,optins是上面配置的sources属性})}}
}
</script><style lang='scss' scoped>
.box {position: fixed;left: 50%;top: 50%;transform: translate(-50%, -50%);height: 600px;width: 800px;z-index: 9999;.video {width: 800px;height: 600px;}.exit {position: absolute;width: 65px;height: 65px;border-radius: 50%;left: 50%;transform: translateX(-50%);font-size: 25px;text-align: center;line-height: 65px;z-index: 10000;color: rgb(255, 255, 255);background-color: black;opacity: 0.5;}
}
</style>

学习到的新的理解
1.子组件在父组件渲染时便开始渲染,并且会在父组件mounted之前执行完mounted,但是,此处的子组件虽然mounted完了,但是由于标签由v-if控制生成的原因,所以即使mounted完了,也不可能拿到里面的DOM元素,需要通过updated去拿
和之前理解上的区别是:之前认为一个页面组件的首次渲染完毕展示出来,就是这个页面组件的mouted;但是此处由于它作为子组件的原因,在父组件渲染完毕之前,它的mounted便以结束

video标签和videojs配置(vue视频弹窗组件)相关推荐

  1. video标签的全部配置

    video标签的全部配置 src:要播放的路径地址 autoplay:是否自动播放,默认值是false,(Boolean) loop:是否循环播放,默认值是false,(Boolean) muted: ...

  2. [html] 说说video标签中预加载视频用到的属性是什么?

    [html] 说说video标签中预加载视频用到的属性是什么? 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

  3. H5:使用video标签在页面中插入视频

    常用属性和值: 例: <!DOCTYPE html> <html><head><meta charset="utf-8" />< ...

  4. HTML5里video标签支持哪些格式的视频文件

    video标签支持的视频格式: Ogg.MPEG4.WebM MP4 = MPEG 4 文件使用H264视频编解码器和AAC音频编解码器 WebM =WebM 文件使用 VP8视频编解码器和Vorbi ...

  5. HTML5中关于解决video标签禁止右键和下载视频的办法

    近期做了一个关于在线文件管理的项目,类似网盘,基本功能包含用户.消息.项目.分享.文件提取.收藏.回收站等主要功能,领挖还有一些office.压缩包.图片.文本.音频和视频的预览功能. 音频我使用的是 ...

  6. vue 自定义弹窗组件

    父组件 <template><div><p @click="onDelete">打开</p><!-- 弹框 -->< ...

  7. vue自定义弹窗组件

    在平时写页面的时候,一些页面总是需要到弹窗,可以将它写成组件的形式,考虑到有不一样的弹窗,可以按照下面的来写: 新建popup.vue, <template><div class=& ...

  8. video标签布播放FLV直播视频

    不多哔哔 直接上案例 <videoref="video"class="video-js vjs-default-skin vjs-big-play-centered ...

  9. Video标签自动启动迅雷,下载视频资源

    问题:用el-upload上传视频资源后,得到视频链接:将视频链接放到video的src属性上,网页上并不会显示视频,而老是自己启动迅雷下载.如下图所示: 解决思路: 1)卸载掉迅雷 (不能要求用户去 ...

最新文章

  1. JavaScript之数据类型
  2. mysql utf8 乱码_MySql UTF8乱码问题应这样修改
  3. 基于消息中间件RabbitMQ实现简单的RPC服务
  4. Java程序员应在2018年学习的3种JVM语言
  5. [css] 如何使用CSS绘制一个汉堡式菜单
  6. redhat5中架设DHCP服务器与DHCP中继
  7. 原生线程池这么强大,Tomcat 为何还需扩展线程池?
  8. 关于Servlet中filter过滤器的小问题
  9. 路由器LED闪灯泄露数据
  10. POJ-1328(Greedy,Vector,Sort,Iterator)
  11. 可变分区存储管理实验报告总结_可变分区存储管理方式的内存分配和回收实验报告...
  12. CS 635: Advanced Systems Programming
  13. python数据处理太慢_使用Python将数据写入LMDB非常慢
  14. 太阳光轨迹软件_飞时达日照分析软件-FastSUN(日照分析软件)下载 v12.0中文版--pc6下载站...
  15. matlab生成正交试验,正交表的构造方法及Matlab实现.pdf
  16. pdf合并成一个文件,pdf合并方法
  17. Redis 会被Dragonfly替代?
  18. BootCDN——React入门学习
  19. 闪客快打介绍(摘自百度)
  20. 2018阿里巴巴全球诸神之战创客大赛总决赛即将举行

热门文章

  1. ajax回调函数有时成功有时失败,$.ajax数据传输成功却执行失败的回调函数
  2. 香港金银业贸易场十大会员名单排行榜
  3. 你喜欢哪款 Linux 桌面?萝莉风?御姐风?
  4. 每日一个小技巧:今天告诉你拍照识别文字的软件有哪些
  5. Revit插件中的“喷淋对齐”“链接CAD”功能操作
  6. PLSQL developer14/PLSQL14如何修改字体和文字大小,如何修改背景颜色?
  7. 常用语言注释使用格式
  8. idea设置单行注释格式(包括配置文件)
  9. 为什么任何数的0次幂是1(除0外)?怎么理解?
  10. 常用元数据标准/受控词表/本体词汇表/的命名空间前缀及IRI链接汇总