我在我的网页上嵌入了一个直播的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 :(得分:0)
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
}
});