Domanda

Ok, ragazzi, ecco il problema che sto avendo, ho un video proveniente da Brightcove e ho un ascoltatore di eventi aggiunto dalla loro API per chiudere la finestra modale FancyBox 2.0 dopo il completamento della riproduzione. Ma anche l'ascoltatore non sta accadendo perché FancyBox sta duplicando il contenuto del Div ma non il JavaScript, quindi l'ascoltatore di eventi non viene attivato.

Ecco il codice

   <!-- Start Brightcove API -->
   <script language="JavaScript" type="text/javascript" src="http://admin.brightcove.com/js/APIModules_all.js"></script>
   <script type="text/javascript">
       var bcExp;
       var modVP;
       function onTemplateLoaded(experienceID) {
           alert("EVENT: TEMPLATE_LOAD");
           bcExp = brightcove.getExperience(experienceID);
           modVP = bcExp.getModule(APIModules.VIDEO_PLAYER);
           modVP.addEventListener(
           BCMediaEvent.COMPLETE, 
           function(event) {
               alert("EVENT: Close Modal Activated");
               jQuery.fancybox.close(true);
           }
       );
       }

       /*   
       function onTemplateLoaded(experienceID) {
           alert("EVENT: TEMPLATE_LOAD");
           bcExp = brightcove.getExperience(experienceID);
           modVP = bcExp.getModule(APIModules.VIDEO_PLAYER);
           modVP.addEventListener(BCMediaEvent.COMPLETE, closeModal);
       }
       function closeModal(event) {
           alert("EVENT: Close Modal Activated");
           jQuery.fancybox.close(true);
       }
        */
   </script>
   <!-- End Brightcove API -->

Qualche idea o soluzioni?

È stato utile?

Soluzione 2

Grazie per il messaggio, ma in realtà l'ho capito che era un enorme goof da parte mia, stavo chiamando FancyBox in questo modo

jQuery.document().ready(function() { 
if (document.location.hash === '#video') { 
jQuery.fancybox.open([{ 
content: jQuery('.video').html(), 

Il resto non è importante perché questo è ciò che lo sta rompendo il .html () ma qualunque cosa sia felice ora

Altri suggerimenti

L'ho fatto con Vimeo ma di solito creo una pagina HTML separata con lo script per eseguire il video. Quindi apro quella pagina in FancyBox usando la modalità iFrame (type:'iframe').

Per l'ascoltatore di Vimeos ho:

function endOfVideo() {
  parent.$.fancybox.close();
}

vimeoAPI.api_addEventListener("onFinish","endOfVideo"); 

che fa il trucco.

Guardando le somiglianze, immagino che nel tuo caso dovrebbe funzionare:

modVP.addEventListener(
 BCMediaEvent.COMPLETE, function(){parent.jQuery.fancybox.close();}
);

Comunque, controlla la documentazione della tua API per il formato e la sintassi giusti ma ma per jQuery.fancybox.close(); o parent.jQuery.fancybox.close(); Se si utilizza iFrame, dovrebbe funzionare in ogni caso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top