如何在没有xfbml.ready的情况下获得Facebook实时视频实例?

时间:2016-08-17 00:04:44

标签: javascript facebook facebook-javascript-sdk

我在我的网页上嵌入了一个直播的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无法解雇有关的类似问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在FB.XFBML.parse上调用

FB.Event.subscribe('xfbml.ready'...,您可以在事件之前强制执行新的解析,仅解析您的嵌入视频父级,如下所示:

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