2016-08-17 23 views
8

Tôi đang nhúng một video Facebook trực tiếp trên trang web của mình và cần đặt trình xử lý sự kiện trên video. Ví dụ: tôi muốn biết liệu video có bị tạm dừng hay không.Làm cách nào để tải video trực tiếp trên Facebook mà không cần xfbml.ready?

Với video thường xuyên (không phải trực tiếp), tôi có thể thực hiện việc này bằng cách đăng ký các sự kiện bằng cách sử dụng phương pháp được nêu trong tài liệu Facebook. Dưới đây là các tài liệu: https://developers.facebook.com/docs/plugins/embedded-video-player/api và mã ví dụ của tôi:

FB.Event.subscribe('xfbml.ready', function (msg) { 
    if (msg.type === 'video') { 
    fplayer = msg.instance; 
    fplayer.subscribe('paused', facebookPauseEventHandler); 
    } 
}); 

Vấn đề là, khi nhúng một video trực tiếp thay vì một "theo yêu cầu" hoặc trước khi ghi video có chấm dứt, sự kiện xfbml.ready không bao giờ cháy. Điều này là bất lợi vì bạn cần phản hồi, trong trường hợp này là "msg", để đăng ký các sự kiện trên Facebook.

Tôi đã thử sử dụng 'xfmbl.rendered' thay vào đó nhưng thông báo nhận được khi sự kiện được kích hoạt chỉ là '1'.

Tôi cũng đã thử đặt trình xử lý sự kiện vào các sự kiện do chính người chơi thực hiện so với sử dụng msg.instance, nhưng điều này là không thể do các vấn đề chính sách gốc chéo (trình phát Facebook nằm trong iFrame).

Bài đăng này =>Unmute facebook live video cũng đang đặt một câu hỏi tương tự liên quan đến xfbml.ready không kích hoạt.

Cảm ơn sự giúp đỡ của bạn.

+0

Bây giờ này là cố định tôi đoán, ít nhất nó hoạt động giống như nó phải: http://shoepimper.com/fb.html –

Trả lời

0

FB.Event.subscribe('xfbml.ready'... được kêu gọi FB.XFBML.parse, bạn có thể buộc một phân tích cú pháp mới trước khi sự kiện của bạn, phân tích chỉ vào cha mẹ nhúng video của bạn, như thế này:

FB.XFBML.parse(document.getElementById('my-embed-video-id').parentNode); 
FB.Event.subscribe('xfbml.ready', function(msg) { 
    if(msg.type === 'video'){ 
    //do something 
    } 
}); 
Các vấn đề liên quan