使用jquery动态嵌入youtube视频

时间:2010-06-03 21:18:23

标签: jquery flash youtube embed youtube-api

我正在尝试检索用户的YouTube视频列表,并使用jQuery将它们嵌入到页面中。我的代码看起来像这样:

  $(document).ready(function() {  

  //some variables  
  var fl_obj_template = $('<object width="260" height="140">' +   
                          '<param name="movie" value=""></param>' +  
                          '<param name="allowFullScreen" value="true"></param>' +  
                          '<param name="allowscriptaccess" value="always"></param>' +  
                          '<embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="260" height="140"></embed>' +  
                          '</object>');  

  var video_elm_arr = $('.video');  


  //hide videos until ready
  $('.video').addClass('hidden');

  //pull video data from youtube
  $.ajax({
    url: 'http://gdata.youtube.com/feeds/api/users/username/uploads?alt=json',
    dataType: 'jsonp',
    success: function(data) {
      $.each(data.feed.entry, function(i,item){
        //only take the first 7 videos
        if(i > 6)
          return;

        //give the video element a flash object
        var cur_flash_obj = fl_obj_template;

        //assign title
        $(video_elm_arr[i]).find('.video_title').html(item.title.$t);

        //clean url
        var video_url = item.media$group.media$content[0].url;
        var index = video_url.indexOf("?");
          if (index > 0)
            video_url = video_url.substring(0, index);

        //and asign it to the player's parameters
        $(cur_flash_obj).find('object param[name="movie"]').attr('value', video_url);
        $(cur_flash_obj).find('object embed').attr('src', video_url);

        //alert(cur_flash_obj);

        //insert flash object in video element
        $(video_elm_arr[i]).append(cur_flash_obj);

        //and show
        $(video_elm_arr[i]).removeClass('hidden');
      });
    }
  });
});  

(当然'username'是实际的用户名)。

视频标题显示正确,但没有视频显示。是什么给了什么?

目标html如下:

<div id="top_row_center" class="video_center video">
  <p class="video_title"></p>
</div>

1 个答案:

答案 0 :(得分:2)

试试这个

变化:

var fl_obj_template = $('<object width="260" height="140">' +    
                          '<param name="movie" value=""></param>' +   
                          '<param name="allowFullScreen" value="true"></param>' +   
                          '<param name="allowscriptaccess" value="always"></param>' +   
                          '<embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="260" height="140"></embed>' +   
                          '</object>'); 

To This:

var fl_obj_template = '<object width="260" height="140">' +    
                          '<param name="movie" value=""></param>' +   
                          '<param name="allowFullScreen" value="true"></param>' +   
                          '<param name="allowscriptaccess" value="always"></param>' +   
                          '<embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="260" height="140"></embed>' +   
                          '</object>';  

我认为youtube代码被用作seletor