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

nic*_*aai 8 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);
  }
});
Run Code Online (Sandbox Code Playgroud)

问题是,当嵌入实时视频而不是"按需"或预先录制的视频结束时,xfbml.ready事件永远不会触发.这是有害的,因为您需要响应,在本例中为"msg",以便订阅Facebook事件.

我尝试使用'xfmbl.rendered',但是当事件被触发时收到的消息只是'1'.

我也曾尝试将事件处理程序放在玩家自己使用msg.instance进行的事件上,但由于交叉来源政策问题(Facebook播放器位于iFrame内),这是不可能的.

这篇帖子=> Unmute facebook直播视频也问了一个与xfbml.ready没有解雇有关的类似问题.

谢谢你的帮助.

小智 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
   }
});
Run Code Online (Sandbox Code Playgroud)