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

问题描述 投票:8回答:1

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

谢谢你的帮助。

javascript facebook facebook-javascript-sdk
1个回答
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
   }
});
© www.soinside.com 2019 - 2024. All rights reserved.