diff --git a/youtube.js b/youtube.js index c0a6e14..59a78f9 100644 --- a/youtube.js +++ b/youtube.js @@ -103,24 +103,39 @@ angular.module("info.vietnamcode.nampnq.videogular.plugins.youtube", []) API.mediaElement[0].pause = function () { ytplayer.pauseVideo(); }; - function updateTime() { - API.onUpdateTime({ - target: API.mediaElement[0] - }); - } - updateTimer = setInterval(updateTime, 600); + updateTime(); // Initial time update angular.element(ytplayer.getIframe()).css({'width':'100%','height':'100%'}); - + // Trigger canplay event var event = new CustomEvent("canplay"); API.mediaElement[0].dispatchEvent(event); } + function updateTime() { + API.onUpdateTime({ + target: API.mediaElement[0] + }); + } + + function startUpdateTimer(interval) { + if (updateTimer) { + stopUpdateTimer(); + } + updateTimer = setInterval(updateTime, interval); + } + + function stopUpdateTimer() { + if (updateTimer) { + clearInterval(updateTimer); + } + } + function onVideoStateChange(event) { var player = event.target; switch (event.data) { case YT.PlayerState.ENDED: + stopUpdateTimer(); API.onComplete(); break; @@ -129,6 +144,7 @@ angular.module("info.vietnamcode.nampnq.videogular.plugins.youtube", []) var event = new CustomEvent("playing"); API.mediaElement[0].dispatchEvent(event); API.setState(VG_STATES.PLAY); + startUpdateTimer(600); break; case YT.PlayerState.PAUSED: @@ -137,6 +153,7 @@ angular.module("info.vietnamcode.nampnq.videogular.plugins.youtube", []) if (API.currentState == VG_STATES.PLAY) { API.setState(VG_STATES.PAUSE); } + stopUpdateTimer(); break; case YT.PlayerState.BUFFERING: @@ -181,7 +198,7 @@ angular.module("info.vietnamcode.nampnq.videogular.plugins.youtube", []) } ); scope.$on('$destroy', function() { - clearInterval(updateTimer); + stopUpdateTimer(); }); } };