Advertisement
mspotilas

Lazy loading of Youtube videos

Dec 10th, 2011
2,801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script src='http://code.jquery.com/jquery-latest.js' type='text/javascript'></script>
  2.  
  3. <script type='text/javascript'>
  4. //<![CDATA[
  5. // Lazy loading of youtube videos by MS-potilas 2011
  6. // Needs jQuery.
  7. // See http://jsfiddle.net/mUqNj/ and http://yabtb.blogspot.com/2011/12/lazy-load-youtube-videos.html
  8. //
  9. // Usage:
  10. // <a class="youtube-lazy-link" style="width:560px;height:315px;" href="http://www.youtube.com/watch?v=3u8sEaohHMk">Sibelius</a>
  11. //  - style is optional, if omitted, default width 560 and height 315 pixels is used
  12. //
  13. $(document).ready(function() {
  14.   $("a.youtube-lazy-link").each(function(index) {
  15.     var embedparms = $(this).attr("href").split("/embed/")[1];
  16.     if(!embedparms) embedparms = $(this).attr("href").split("?v=")[1].replace(/\&/,'?');
  17.     var youid = embedparms.split("?")[0].split("#")[0];
  18.     var start = embedparms.match(/[#&]t=(\d+)s/);
  19.     if(start) start = start[1];
  20.     else {
  21.       start = embedparms.match(/[#&]t=(\d+)m(\d+)s/);
  22.       if(start) start = parseInt(start[1])*60+parseInt(start[2]);
  23.       else {
  24.         start = embedparms.match(/[?&]start=(\d+)/);
  25.         if(start) start = start[1];
  26.       }
  27.     }
  28.     embedparms = embedparms.split("#")[0];
  29.     if(start && embedparms.indexOf("start=") == -1)
  30.       embedparms += ((embedparms.indexOf("?")==-1) ? "?" : "&") + "start="+start;
  31.     if(embedparms.indexOf("showinfo=0") != -1)
  32.       $(this).html('');
  33.     $(this).prepend('<div style="height:'+(parseInt($(this).css("height"))-4)+'px;width:'+(parseInt($(this).css("width"))-4)+'px;" class="youtube-lazy-link-div"></div>&nbsp;')
  34.     $(this).css("background", "#000 url(http://i2.ytimg.com/vi/"+youid+"/0.jpg) center center no-repeat");
  35.     $(this).attr("id", youid);
  36.     $(this).attr("href", "http://www.youtube.com/watch?v="+youid+(start ? "#t="+start+"s" : ""));
  37.     var emu = 'http://www.youtube.com/embed/'+embedparms;
  38.     emu += ((emu.indexOf("?")==-1) ? "?" : "&") + "autoplay=1";
  39.     var videoFrame = '<iframe width="'+parseInt($(this).css("width"))+'" height="'+parseInt($(this).css("height"))+'" style="vertical-align:top;" src="'+emu+'" frameborder="0" allowfullscreen></iframe>';
  40.     $(this).attr("onclick", "$('#"+youid+"').replaceWith('"+videoFrame+"');return false;");
  41.   });
  42. })
  43. //]]>
  44. </script>
  45. <style type='text/css'>
  46. a.youtube-lazy-link {
  47.   vertical-align:top;
  48.   background:#555;
  49.   width:560px; height:315px;
  50.   background-size:cover;
  51.   text-decoration:none;
  52.   color:#DDD;
  53.   text-align:left;
  54.   text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
  55.   display:inline-block;
  56. }
  57. a.youtube-lazy-link:hover {
  58.   text-decoration:none;
  59.   color:#FFF;
  60. }
  61. .youtube-lazy-link-div {
  62.   border:2px solid #000;
  63.   background: url(http://lh4.googleusercontent.com/-QCeB6REIFlE/TuGUlY3N46I/AAAAAAAAAaI/9-urEUtpKcI/s800/youtube-play-button.png) center center no-repeat;
  64.   position:absolute;
  65. }
  66. .youtube-lazy-link-div:hover {
  67.   background: url(http://lh5.googleusercontent.com/-oBFjswrosz4/TuHqainRc3I/AAAAAAAAAbE/t3rMQuSJdLA/s800/youtube-play-button-hover.png) center center no-repeat;
  68. }
  69. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement