Skip to content

Instantly share code, notes, and snippets.

@danielsneijers
Last active August 29, 2015 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielsneijers/0b083527a69221099209 to your computer and use it in GitHub Desktop.
Save danielsneijers/0b083527a69221099209 to your computer and use it in GitHub Desktop.
Youtube on-demand loading of videos
<!-- credit to Amit Agarwal for sharing this on http://ctrlq.org/code/19452-embed-youtube-with-javascript -->
<!-- You can embed multiple Youtube videos on a page -->
<div class="youtube" id="LcIytqkbdlo" style="width:560px; height: 315px;">
</div>
<div class="youtube" id="_Jmisv1Spck" style="width:560px; height: 315px;">
</div>
<!-- Include the JavaScript only once -->
<script>
// Find all the YouTube video embedded on a page
var videos = document.getElementsByClassName("youtube");
for (var i=0; i<videos.length; i++) {
var youtube = videos[i];
// Based on the YouTube ID, we can easily find the thumbnail image
var img = document.createElement("img");
img.setAttribute("src", "http://i.ytimg.com/vi/"
+ youtube.id + "/hqdefault.jpg");
img.setAttribute("class", "thumb");
// Overlay the Play icon to make it look like a video player
var circle = document.createElement("div");
circle.setAttribute("class","circle");
youtube.appendChild(img);
youtube.appendChild(circle);
// Attach an onclick event to the YouTube Thumbnail
youtube.onclick = function() {
// Create an iFrame with autoplay set to true
var iframe = document.createElement("iframe");
iframe.setAttribute("src",
"https://www.youtube.com/embed/" + this.id
+ "?autoplay=1&autohide=1&border=0&wmode=opaque&enablejsapi=1");
// The height and width of the iFrame should be the same as parent
iframe.style.width = this.style.width;
iframe.style.height = this.style.height;
// Replace the YouTube thumbnail with YouTube HTML5 Player
this.parentNode.replaceChild(iframe, this);
};
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment