2011-04-20 92 views
0

我知道这必须完全是贫民窟,但我想弄清楚如何获得我的YouTube链接的饲料,以一种有点时尚的方式显示在我的主页上。我厌倦了不得不在YouTube上发布内容,然后在我的网站上创建一个帖子,基本上是youtube帖子的重复内容。也许已经有内置这种功能的东西,但到目前为止我还没有看到它。我有什么我试图迄今完成了几个问题:Youtube API和JavaScript问题

  1. 我如何更新我的代码,所以我可以在我的youTubeMe对象使用“这个”诗有引用变量名。我很确定我明白为什么我不能使用它,目前我是如何做的,但我不知道如何解决?

  2. 其次,谷歌API似乎有点奇怪我。我并不太在意使用iFrame和我必须做的分割操作,以便让VideoId不能正确。

  3. 任何意见将不胜感激。我会后的代码,但你也可以找到工作的例子here

HTML:

<div id="pager"> 
</div> 
<div id="player"> 
</div> 
<script type="text/javascript"> 
    var tag = document.createElement('script'); 
    tag.src = "http://www.youtube.com/player_api"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

    function onYouTubePlayerAPIReady() { 
     youTubeMe.init(); 
    } 

</script> 

JAVASCRIPT:

var youTubeMe = { 
    pageSize: 10, 
    player: null, 
    startIndex: 1, 
    username: 'google', 

    init: function() { 
     $.getJSON('http://gdata.youtube.com/feeds/users/' + this.username + '/uploads?alt=json&start-index=' + this.startIndex + '&max-results=' + youTubeMe.pageSize, youTubeMe.createYouTubePlayers); 
    }, 

    createYouTubePlayers: function(data) { 
     $('#player').empty(); 
     $('#pager').empty(); 
     if (data.feed.entry.length < youTubeMe.pageSize) { 
      youTubeMe.createPreviousButton(); 
     } else { 
      if (youTubeMe.startIndex !== 1) { 
       youTubeMe.createPreviousButton(); 
      } 
      youTubeMe.createNextButton(); 
     } 

     for (var i = 0; i < data.feed.entry.length; i++) { 
      player = new YT.Player('player', { 
       height: '195', 
       width: '320', 
       videoId: data.feed.entry[i].id.$t.split('/')[5] 
      }); 
     } 
    }, 

    createNextButton: function() { 
     $('<a id=\"next\" href=\"#\">next</a>').appendTo('#pager'); 
     $('#next').click(function(e) { 
      e.preventDefault(); 
      youTubeMe.startIndex += youTubeMe.pageSize; 
      youTubeMe.init(); 
     }); 
    }, 

    createPreviousButton: function() { 
     $('<a id=\"prev\" href=\"#\">prev</a>').appendTo('#pager'); 

     $('#prev').click(function(e) { 
      e.preventDefault(); 
      youTubeMe.startIndex -= youTubeMe.pageSize; 
      youTubeMe.init(); 
     }); 
    } 

}; 

CSS:

iframe { margin: 20px; } 
#pager { background-color: #666; line-height: 3em; text-align: center; } 
#pager a { color: #fff; font-size: 1.8em; margin: 0 15px; } 

回答

1

你应该去的方式是创建一个clo当然,并且拥有一切。你可以这样做:

 
//a closure function that calls itself 
(function(){ 

    //with var it would be private and not accesable like this: 
    //youTubeMe.pageSize 
    var pageSize = 10; 

    //declare a global reference to the youTubeMe object 
    var youTubeMe = window.youTubeMe = function(){ 

    }; 

    //with youTubeMe.* it is accessable from anywhere in your page 
    //you can either 
    //declare a public variable like this 
    youTubeMe.player = "youtube player"; 
    //or a public method like this 
    youTubeMe.foo = function(){ 
     //this "this" here is your youTubeMe object 
     console.log(this); 
     bar(); 
    }; 

    //like the private variable at the top, this function is private 
    //and can only be called from inside the youTubeMe object 
    function bar(){ 
     //this "this" here is the window 
     console.log(this); 
    } 

})(); 


console.log(youTubeMe.player); //out puts youtube_player 
youTubeMe.foo(); //outputs the youTubeMe object 
youTubeMe.bar() //throws an undefined error 

至于youtube api;我一直认为它非常好。我从来没有使用iframe嵌入,因为“iframe嵌入”听起来不对我。如果您使用youtube api,则有两个选项:Embedded playerchromeless player。看看嵌入式播放器,因为除非你想为你的播放器构建一个自定义外观,否则它的路要走。当您使用api时,创建播放列表变得容易,因为您可以让javascript执行所有播放和播放列表。

希望有所帮助。