JQuery Fancybox Problema con BrightCove .AddeventListener Función
-
28-10-2019 - |
Pregunta
Bien chicos, aquí está el problema que tengo, tengo un video que proviene de Brightcove y tengo un oyente de eventos agregado desde su API para cerrar la ventana modal Fancybox 2.0 después de que se complete la reproducción. Pero el oyente incluso no está sucediendo porque Fancybox está duplicando el contenido del DIV, pero no del JavaScript, por lo que el oyente del evento no se está activando.
Aquí está el código
<!-- 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 -->
¿Alguna idea o solución?
Solución 2
Gracias por el mensaje, pero en realidad lo descubrí que era un gran tonto de mi parte al que llamaba Fancybox como este.
jQuery.document().ready(function() {
if (document.location.hash === '#video') {
jQuery.fancybox.open([{
content: jQuery('.video').html(),
El resto no es importante porque eso es lo que lo está rompiendo el .html () pero lo que sea contento que se arregle ahora
Otros consejos
He hecho esto con Vimeo, pero generalmente creo una página HTML separada con el script para ejecutar el video. Luego abro esa página en Fancybox usando el modo iframe (type:'iframe'
).
Para el oyente de Vimesos tengo:
function endOfVideo() {
parent.$.fancybox.close();
}
vimeoAPI.api_addEventListener("onFinish","endOfVideo");
que hace el truco.
Mirando las similitudes, supongo que en su caso esto debería funcionar:
modVP.addEventListener(
BCMediaEvent.COMPLETE, function(){parent.jQuery.fancybox.close();}
);
De todos modos, consulte la documentación de su API para el formato y la sintaxis correctos, pero jQuery.fancybox.close();
o parent.jQuery.fancybox.close();
Si usa iframe, debe funcionar en cualquier caso