javascript - 以模态显示视频

标签 javascript jquery html html5-video bootstrap-modal

我正在寻找一种在模态弹出窗口中动态显示视频的方法,而无需嵌入到 YouTube 中。

$(function() {
  $(".video").click(function () {
    var theModal = $(this).data("target"),
        videoSRC = $(this).attr("data-video"),
        videoSRCauto = videoSRC + "";
    $(theModal + ' source').attr('src', videoSRCauto);
    $(theModal + ' button.close').click(function () {
      $(theModal + ' source').attr('src', videoSRC);
    });
  });
});
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</head>

<button class="btn btn-lg video" data-video="https://clienti.dk/media/1140/friheden-video.mp4" data-toggle="modal" data-target="#videoModal">Play Video</button>

  <div class="modal fade" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-body">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <video controls>
            <source src="" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
  </div>

YouTube Iframe - 在 iframe 中嵌入 YouTube 视频的工作示例

Regular video - 在这里我尝试使用 html 视频代替。视频获得了正确的 src,但加载时间可能存在问题。

谁能帮帮我吗?

最佳答案

一切看起来都不错,只是缺少 $(theModal + ' video').load();。如果您设置 src 运行时,则必须加载外部视频。

请参阅下面的片段:

$(function() {
  $(".video").click(function () {
    var theModal = $(this).data("target"),
        videoSRC = $(this).attr("data-video"),
        videoSRCauto = videoSRC + "";
    $(theModal + ' source').attr('src', videoSRCauto);
    $(theModal + ' video').load();
    $(theModal + ' button.close').click(function () {
      $(theModal + ' source').attr('src', videoSRC);
    });
  });
});
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</head>

<button class="btn btn-lg video" data-video="https://clienti.dk/media/1140/friheden-video.mp4" data-toggle="modal" data-target="#videoModal">Play Video</button>

  <div class="modal fade" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-body">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <video controls width="100%">
            <source src="" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
  </div>

你可以测试一下here

关于javascript - 以模态显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54481655/

相关文章:

javascript - 如何将文本框中的聊天消息显示到div

Javascript单选按钮在选择一个单选按钮时取消选择其他单选按钮?

javascript - 如何使用 JavaScript 对象中的数据完成 html 表单

javascript - 如何将节点识别为根节点?

java - 如何使用 jdk 调用具有 Jqueries 的 javascript 1.6's javax.script API' s/Rhino Api's

javascript - $_POST 无法从 html 文件中的文本字段检索数据

javascript - 当用户单击按钮时,如何防止 google chrome android 浏览器显示放大镜?

javascript - jquery 移动弹出对话框 : Cannot read property 'is' of undefined

javascript - 当 customElement : true is set 时,Svelte 绑定(bind)不起作用

javascript - 在 div 容器中添加 SVG 文本