Skip to content

Instantly share code, notes, and snippets.

@zigotica
Last active June 11, 2026 03:36
Show Gist options
  • Select an option

  • Save zigotica/4438876 to your computer and use it in GitHub Desktop.

Select an option

Save zigotica/4438876 to your computer and use it in GitHub Desktop.
Very simple method to add custom poster frame to youtube video without using youtube API. This code is also valid in browsers not supporting window.postMessage (API uses postMessage). The trick is adding the iframe in a comment. Javascript reads comment contents and saves iframe definition to a var. When JQuery (for the sake of brevity, not real…
.video { position: relative; padding-bottom: 56.25%; /* 16:9 */ height: 0; }
.video img { position: absolute; display: block; top: 0; left: 0; width: 100%; height: 100%; z-index: 20; cursor: pointer; }
.video:after { content: ""; position: absolute; display: block;
background: url(play-button.png) no-repeat 0 0;
top: 45%; left: 45%; width: 46px; height: 36px; z-index: 30; cursor: pointer; }
.video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/* image poster clicked, player class added using js */
.video.player img { display: none; }
.video.player:after { display: none; }
<div class="video">
<img src="poster.jpg">
<!-- <iframe width="940" height="529" src="http://www.youtube.com/embed/rRoy6I4gKWU?autoplay=1" frameborder="0" allowfullscreen></iframe>-->
</div>
$(function() {
var videos = $(".video");
videos.on("click", function(){
var elm = $(this),
conts = elm.contents(),
le = conts.length,
ifr = null;
for(var i = 0; i<le; i++){
if(conts[i].nodeType == 8) ifr = conts[i].textContent;
}
elm.addClass("player").html(ifr);
elm.off("click");
});
});
@binmatai

Copy link
Copy Markdown

Really good job on the site, Keep up the good work!
Baa baa Black Sheep

@thecopelandcollective

Copy link
Copy Markdown

can you explain what this for statement does?

for (var i = 0; i < length; i++) { if (conts[i].nodeType == 8) ifr = conts[i].textContent; }

@Jakobud

Jakobud commented Apr 25, 2016

Copy link
Copy Markdown

@thecopelandcollective

That code is iterating through the contents of the element, and if it's an HTML comment (https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType .... see constant value of 8) then essentially uncomment it, which in turn loads the iframe.

@sk-923

sk-923 commented May 24, 2016

Copy link
Copy Markdown

its not working the iframe not loads

@changemenemo

Copy link
Copy Markdown

hi sorry to disturb you guys, but where do I put the script? just before the div from the video ?

@nikisebi

Copy link
Copy Markdown

Works perfectly, and makes pages with a bunch of videos load fast. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment