使用Brightcove .addeventlistener函数的jQuery FancyBox问题

时间:2011-12-06 18:41:25

标签: jquery fancybox brightcove

好的伙伴们这里有我遇到的问题,我有一个来自brightcove的视频,我有一个事件监听器从他们的api添加到播放完成后关闭fancybox 2.0模式窗口。但是偶数监听器没有发生,因为fancybox正在复制div中的内容而不是javascript,因此事件监听器没有被激活。

这是代码

   <!-- 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 -->

任何想法或解决方案?

2 个答案:

答案 0 :(得分:0)

我用vimeo做了这个,但通常我用脚本创建一个单独的html页面来运行视频。然后我使用iframe模式(type:'iframe')在Fancybox中打开该页面。

对于vimeos的听众我有:

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

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

这就是诀窍。

看看相似之处,我想在你的情况下这应该有效:

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

无论如何,请检查您的API文档以获取正确的格式和语法,但jQuery.fancybox.close();parent.jQuery.fancybox.close();如果使用iframe,则无论如何都应该有效

答案 1 :(得分:0)

感谢您的留言,但实际上我发现这对我来说是一个巨大的蠢事,我正在调用像这样的fancybox

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

其余的并不重要,因为那就是打破它的.html()但不管它现在修复了什么呢?