2016-08-17 75 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 
    } 
}); 
相關問題