2016-08-17 41 views
8

我在我的网页上嵌入了一个实时Facebook视频,需要在视频中放置事件处理程序。例如,我想知道视频是否已暂停。如何在没有xfbml.ready的情况下获取Facebook直播视频实例?

对于常规视频(非实况)视频,我可以通过使用Facebook文档中列出的方法订阅事件来完成此操作。下面是文档:https://developers.facebook.com/docs/plugins/embedded-video-player/api和我的例子代码:

FB.Event.subscribe('xfbml.ready', function (msg) { 
    if (msg.type === 'video') { 
    fplayer = msg.instance; 
    fplayer.subscribe('paused', facebookPauseEventHandler); 
    } 
}); 

的问题是,嵌入实时视频,而不是一个“按需”或预先录制的视频的结束,xfbml.ready事件时从不开火。这是有害的,因为您需要响应,在这种情况下“msg”,以订阅Facebook事件。

我试过使用'xfmbl.rendered'来代替,但事件被触发时收到的消息只是'1'。

我也曾尝试将事件处理程序放在由玩家本身对使用msg.instance进行的事件上,但由于跨源策略问题(Facebook播放器在iFrame内),这是不可能的。

这篇文章=>Unmute facebook live video也提出了一个类似的问题,涉及到xfbml.ready没有射击。

感谢您的帮助。

+0

现在这是固定的我想,至少它的工作原理是:http://shoepimper.com/fb.html –

回答

0

FB.Event.subscribe('xfbml.ready'...叫上FB.XFBML.parse,你可以强制一个新的解析您的活动之前,只在您的嵌入视频分析父,是这样的:

FB.XFBML.parse(document.getElementById('my-embed-video-id').parentNode); 
FB.Event.subscribe('xfbml.ready', function(msg) { 
    if(msg.type === 'video'){ 
    //do something 
    } 
}); 
相关问题