Click poster frame to start HTML5 video using jQuery

by Thomas Beutel

I needed to have an HTML5 video with a clickable poster frame. The first issue was that Safari would preload the movie, removing the poster frame after a few seconds. I fixed that by setting preload=”none”:

<div id="promovid">
<video id="video" controls="controls" poster="video-poster.jpg" preload="none" width="640" height="480">
...
</div>

Them to make the poster frame clickable, I used this jQuery snippet:

<script>
$(document).ready(function(){
$('#promovid').click( function(){
$('#video').get(0).play();       // get(0) gets the original DOM element
$('#promovid').unbind('click');  // remove click listener
});
</script>

Notice that I remove the click listener after the first click. This viewer can then use the native controls to pause or fullscreen the movie.

Also note the use of get(0) on the $(‘#video’) element. My first inclination was to say $(‘#video’).play(). However, jQuery elements don’t usually expose the methods of the selected DOM element. To access the actual DOM element, I had to use get(0).

References:

http://stackoverflow.com/questions/4646998/play-pause-html-5-video-using-jquery

http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in-jquery