好的伙伴们这里有我遇到的问题,我有一个来自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 -->
任何想法或解决方案?
答案 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()但不管它现在修复了什么呢?