2013-02-20 1 views
2

У меня есть видеопроигрыватель, который открывается и воспроизводится всякий раз, когда нажимается ссылка, и после просмотра двух видео появляется форма, которая позволяет вам оценивать предоставленную информацию.Как правильно убить функцию

Проблема, с которой я столкнулся, заключается в том, что есть кнопка воспроизведения, которая появляется, когда видео завершено. В настоящее время у меня есть setTimeout, который устраняет видео, и он накладывается, затем запускает функцию формы ставки. НО, если кнопка воспроизведения, которую он нажал, setTimeout все еще работает, а на полпути через воспроизведение видео запускается функция. Вот мой код:

Remove Video Overlay

fnVideoOverlayOff = function() { 

    jQuery('#video, #block, .video-closebtn').css('display', 'none'); 

} 

JW Player Код

jwplayer('videoScreen').setup({ 
     flashplayer: '/assets/js/lib/player.swf', 
     allowscriptaccess: "always", 
     width:972, 
     height:547, 
     controlbar: "none", 
     autostart: true, 
     playlistfile: "/assets/videos/playlist.xml", 
     events: { 
      onPlaylistItem: function (event) { 

       jQuery(document).idleTimer('destroy'); 

      }, 
          onPLay: function (event) { 

          }, 
      onComplete: function (event) { 

       setTimeout(function() { 

        fnVideoOverlayOff(); 

       }, 10000); 

       var clickCount = 0; 

       if(jQuery.cookie('clickCount') == 2) { 

        fnRateOverlayOn(); 

        jQuery('#video, .video-closebtn').css('display', 'none'); 

       } 
      } 
     } 
    }); 

Я хотел убить fnVideoOverlayOff();, если нажата кнопка воспроизведения

ответ

2

Сохраните ссылку на setTimeout и позвоните по номеру clearTimeout(), если вы хотите, чтобы он не закончил.

fnVideoOverlayOffTimer = setTimeout(... 

// and later on when you want to "kill" it, 

clearTimeout(fnVideoOverlayOffTimer);` 

В идеале вы должны объявить fnVideoOverlayOffTimer где-то сохранить его глобальный масштаб, но это не является обязательным.