显示和隐藏播放器

点击下载教程相关资源

不建议尝试切换 Video.js 播放器的可见性或显示。相反,应根据需要创建和删除( disposed)播放器。

这与在模态/叠加中显示播放器等用例有关。与在 DOM 元素中保留隐藏的 Video.js 播放器相比,建议在打开模态时创建播放器,并在关闭模态时将其删除( disposed)。

注意:在涉及内存/资源使用时(如移动设备),这一点尤为重要。

根据所使用的库/框架,实现方式可能如下:

modal.on('show', function() {
  var videoEl = modal.findEl('video');
  modal.player = videojs(videoEl);
});

modal.on('hide', function() {
  modal.player.dispose();
});

完整示例:

<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Video.js</title>
    <!-- 引入 Video.js 样式 -->
    <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" />
    <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) -->
    <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> -->
  </head>
  <body>
    <div id="container">
      <!-- 放置播放器 -->
    </div>
    <p>
      <button onclick="show()">显示</button>
      <button onclick="hide()">隐藏</button>
    </p>

    <!-- 引入 Video.js 库 -->
    <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script>
    <script>
      let player = undefined;
      // 显示
      function show() {
        document.getElementById("container").innerHTML =
          "<video id=\"vid1\" class=\"video-js\">\n" +
          "   <source src=\"../resources/oceans.mp4\" type=\"video/mp4\" />\n" +
          "   <source src=\"../resources/oceans.webm\" type=\"video/webm\" />\n" +
          "</video>";
        player = videojs('vid1', {
          preload: "auto",
          controls: true,
          width: "640",
          height: "264px",
          poster: "../resources/oceans.jpg"
        });
        player.play();
      }

      // 隐藏
      function hide() {
        if(!!player) {
          // 同时从 DOM 和内存中移除 Video.js 播放器
          player.dispose();
        }
      }
    </script>
  </body>
</html>

运行示例,效果图:

显示和隐藏播放器

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号