0

好的,伙计们,这就是我遇到的问题,我有一个来自 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 -->

有什么想法或解决方案吗?

4

2 回答 2

0

我已经使用 vimeo 完成了此操作,但通常我使用脚本创建一个单独的 html 页面来运行视频。type:'iframe'然后我使用 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,无论如何都应该可以工作

于 2011-12-06T19:17:20.593 回答
0

感谢您的消息,但实际上我发现这是我的一个巨大的错误,我这样称呼fancybox

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

其余的并不重要,因为这就是 .html() 破坏它的原因,但无论如何它现在已修复

于 2011-12-07T14:53:07.283 回答