From b7974ad27ba7619c5d0873424a3ba9201ecc7cb8 Mon Sep 17 00:00:00 2001 From: Ernie Park Date: Wed, 11 Jan 2012 16:03:34 -0500 Subject: [PATCH] fix bug where HTML5 videos wouldn't play when switching to new tab because callback function wasn't being called when video was ready --- js/video_player.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/video_player.js b/js/video_player.js index c4185e8a5f..f898b6e469 100644 --- a/js/video_player.js +++ b/js/video_player.js @@ -141,6 +141,7 @@ function setytplayerState(newState) { // IMPORTANT TODO: Load test // POSSIBLE FIX: Move to unload() event and similar var ajax_video=function(){}; +var ytplayer; function onYouTubePlayerReady(playerId) { ytplayer = document.getElementById("myytplayer"); @@ -166,6 +167,14 @@ function onYouTubePlayerAPIReady() { ajax_videoInterval = setInterval(ajax_video, 5000); } +// Need this function to call the API ready callback when we switch to a tab with AJAX that has a video +// That callback is not being fired when we switch tabs. +function loadHTML5Video() { + if (!ytplayer && switched_tab){ + onYouTubePlayerAPIReady(); + } +} + function onPlayerReady(event) { // alert("ready"); event.target.playVideo(); @@ -178,12 +187,15 @@ function onPlayerStateChange(event) { /* End HTML5 Specific */ + +var switched_tab = false; // switch to true when we destroy so we know to call onYouTubePlayerAPIReady() // clear pings to video status when we switch to a different sequence tab with ajax function videoDestroy() { load_id = 0; clearInterval(updateytplayerInfoInterval); clearInterval(ajax_videoInterval); ytplayer = false; + switched_tab = true; } function log_event(e, d) {