Jquery ui 在jQuery UI对话框中使用video.js会出现第二个视频和重复播放的问题 上下文

Jquery ui 在jQuery UI对话框中使用video.js会出现第二个视频和重复播放的问题 上下文,jquery-ui,dialog,video.js,Jquery Ui,Dialog,Video.js,我有一个页面,其中包含一系列指向jQueryUI对话框的链接,这些对话框中有video.js播放器 问题 当你第一次点击其中一个链接时,一切都很完美 当您单击后续时间时,您会遇到问题。我已经修复了打开第二个不同视频的问题,使所有ID都是唯一的 然而,这似乎无助于第二次打开同一个视频;因此,我甚至使这些播放器的id是唯一的(请参见下面的id属性,该属性包含视频的散列以及兰德) 确定的问题 我看到的情况是,一旦关闭对话框,浏览器将继续下载视频源。这意味着随后打开的对话框将创建更多视频下载等 问题 如

我有一个页面,其中包含一系列指向jQueryUI对话框的链接,这些对话框中有video.js播放器

问题 当你第一次点击其中一个链接时,一切都很完美

当您单击后续时间时,您会遇到问题。我已经修复了打开第二个不同视频的问题,使所有ID都是唯一的

然而,这似乎无助于第二次打开同一个视频;因此,我甚至使这些播放器的id是唯一的(请参见下面的
id
属性,该属性包含视频的散列以及
兰德

确定的问题 我看到的情况是,一旦关闭对话框,浏览器将继续下载视频源。这意味着随后打开的对话框将创建更多视频下载等

问题
  • 如何阻止视频下载
  • 有没有比我现在做的更好的重新开始的方法
  • 当有人按下关闭按钮时,有没有更好的方法来删除视频
  • 代码 jQueryUI对话框窗口加载了以下HTML
    我不知道这是否是解决这个问题的正确答案;然而,我最终改变了我的javascript,使其看起来像下面这样

    秘密是设置src=”“以使浏览器停止缓冲。这会在控制台上引发一个视频错误,我真的不喜欢;但现在它可以工作

    video_play_click_event: function(event) {
        $.loading();
        $('<div title="'+$(this).attr('title')+'">').load($(this).attr('href'), function(responseText, textStatus){
          $.loading();
          $this = $(this);
          $this.dialog({
            width: 320,
            height: 400,
            modal: true,
            buttons: {
              Close: function() {
                $(this).dialog('close');
              },  
            },  
            open: function(event, ui) {
                id = $(this).find('.video-js:first').attr('id');
                _V_(id);
                $(this).css({overflow: 'hidden', padding: '0'});
            },  
            beforeClose: function() {
                $('.video-js').player().pause();
                $('.video-js video').attr('src', '');
                $('.video-js').remove();
            }   
          }); 
        }); 
        return false;
      }   
    
    video\u play\u click\u事件:函数(事件){
    $.loading();
    $('').load($(this.attr('href'),函数(responseText,textStatus){
    $.loading();
    $this=$(this);
    $this.dialog({
    宽度:320,
    身高:400,
    莫代尔:是的,
    按钮:{
    关闭:函数(){
    $(this.dialog('close');
    },  
    },  
    打开:功能(事件、用户界面){
    id=$(this.find('.video js:first').attr('id');
    _V_(id);
    $(this.css({overflow:'hidden',padding:'0'});
    },  
    beforeClose:function(){
    $('.video js').player().pause();
    $('.video js video').attr('src','');
    $('.video js').remove();
    }   
    }); 
    }); 
    返回false;
    }   
    
    我在一个给定的页面上有很多视频,我也面临着同样的问题。但是下面的方法对我来说很有效

    注意:更改页面中每个视频的MYID

    jQuery(document).ready(function(){
       jQuery("a#videolink").fancybox({
          frameWidth: 800, 
          frameHeight: 450,
          overlayShow: true,
          overlayOpacity: 0.7
       });
    });
    
    
    <a id="videolink" href="#MYID" title="Test Video">
      <img src="mp4test.jpg" width="248" height="145" />
    </a>
    
    <div style="display:none">
          <video id="MYID" poster="mp4test.jpg" class="video-js vjs-default-skin" 
                 controls preload="auto" width="300" height="300" data-setup="{}" >
            <source src="mp4test.mp4" type='video/mp4'>
        </video>
    </div>  
    
    jQuery(文档).ready(函数(){
    jQuery(“视频链接”).fancybox({
    帧宽:800,
    帧高:450,
    是的,
    产能过剩:0.7
    });
    });
    
    video_play_click_event: function(event) {
        $.loading();
        $('<div title="'+$(this).attr('title')+'">').load($(this).attr('href'), function(responseText, textStatus){
          $.loading();
          $this = $(this);
          $this.dialog({
            width: 320,
            height: 400,
            modal: true,
            buttons: {
              Close: function() {
                $(this).dialog('close');
              },  
            },  
            open: function(event, ui) {
                id = $(this).find('.video-js:first').attr('id');
                _V_(id);
                $(this).css({overflow: 'hidden', padding: '0'});
            },  
            beforeClose: function() {
                $('.video-js').player().pause();
                $('.video-js video').attr('src', '');
                $('.video-js').remove();
            }   
          }); 
        }); 
        return false;
      }   
    
    jQuery(document).ready(function(){
       jQuery("a#videolink").fancybox({
          frameWidth: 800, 
          frameHeight: 450,
          overlayShow: true,
          overlayOpacity: 0.7
       });
    });
    
    
    <a id="videolink" href="#MYID" title="Test Video">
      <img src="mp4test.jpg" width="248" height="145" />
    </a>
    
    <div style="display:none">
          <video id="MYID" poster="mp4test.jpg" class="video-js vjs-default-skin" 
                 controls preload="auto" width="300" height="300" data-setup="{}" >
            <source src="mp4test.mp4" type='video/mp4'>
        </video>
    </div>