Как добавить javascript в модальное окно для воспроизведения видео?

#javascript #jquery #ruby-on-rails #ruby-on-rails-4

#javascript #jquery #ruby-on-rails #ruby-on-rails-4

Вопрос:

Итак, у меня есть приложение, в котором пользователи могут загружать и воспроизводить видео. Теперь у меня есть модальное окно предварительного просмотра, которое позволяет пользователям нажимать на клип, и появляется модальное окно, в котором они могут воспроизвести клип.

Однако на данный момент в модальном окне есть только миниатюра клипа, вот так:

 $('#myModal .my-profiletxt').html('<%= @clip.film.name %>');
$('.qpcliptitle').html('<%= @clip.name %>');
$('.qpdesc').html('<%= @clip.description %>');
$('.qptaglist').html('<%= @clip_tags %>')
$('#myModal .queuepagevideo').html('<%= image_tag(@clip.thumbnail.url(:large)) %>');
$('#myModal .qpposter').html('<%= image_tag(@clip.film.poster.url(:medium)) %>');
$('.qpimages').html('<%= j(rating_for @clip, "rating") %>');
$('#myModal').modal('show');
  

Как я могу добавить свой видеопроигрыватель javascript вместо миниатюры, чтобы пользователи могли просматривать и воспроизводить клипы в модальном режиме?

Вот код видеоплеера JS, который работает вне модального:

  <div class="video-img">
        <script src="http://jwpsrv.com/library/Nu3Cav_oEeKU_RIxOUCPzg.js"></script>
        <div id='my-video<%= @clip.video.id %>'></div>
        <script type='text/javascript'>
            jwplayer('my-video<%= @clip.video.id %>').setup({
                playlist: [{
                        image: "<%= @clip.video.thumbnail_url %>",
                        sources: [
                            { file: "<%= video_url(@clip.video.remote_id, :smil) %>" },
                            { file: "<%= video_url(@clip.video.remote_id, :m3u8) %>" }
                        ]
                    }],
                primary: "flash",
                width: '100%',
                height: '350',
                rtmp: {
                        bufferlength: 7
                    }
            });
        </script>
        <%#= image_tag('video-img.jpg') %>
      </div>
    </div>
  

Любая помощь здесь была бы отличной, спасибо!

Ответ №1:

Похоже, вы используете модальное окно Bootstrap, у которого есть show.bs.modal событие, которое запускается прямо перед отображением модального окна. Вы можете подключиться к этому, а затем выполнить дополнительный javascript из функции обратного вызова.

 $('#myModal').on('show.bs.modal', function(){
    //execute setup function within this
});
  

Я уверен, что есть несколько динамических аргументов, которые вам нужно будет передать, чтобы получить соответствующее видео, поэтому, вероятно, лучше всего использовать data-video="<%= @clip.video.id %>" , чтобы вы могли сохранить ссылку на идентификатор видео в этом. Вероятно, вам понадобится нечто большее, чем просто один атрибут данных для хранения ссылки на идентификатор миниатюры и т.д…Затем в вашей функции click вы можете извлечь эти данные.