检测Facebook分享成功?

时间:2014-10-03 14:59:33

标签: javascript facebook

我想要检测网页上的Facebook共享是否成功,并且在成功时更改框的值。我可以很好地处理后者,但是如何执行实际的共享检测有点丢失。我是Google并找到了FB.ui,但是如何将其实际应用到页面中并让它运行检测?

2 个答案:

答案 0 :(得分:2)

首先,您必须包含Facebook sdk.js库以使用其所有方法(理想情况下,在打开正文标记后)

<script>
(function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>

http://jsfiddle.net/ysdp60cz/的问题是 facebookShare var的范围。因此,在此示例中,只需将其包含在窗口对象中:

window.facebookShare = function( callback ) { [...]

我不知道你是如何组织代码的,但是,通过这些修改它必须有效。

您可以在此处查看:http://jsfiddle.net/benjasHu/3dhq9k21/

干杯。

答案 1 :(得分:0)

我不知道您是否使用Facebook SDK创建共享对话框,但是使用SDK可以获得类似这样的响应状态(当然,您必须先加载Facebook脚本):

FB.init({
    appId  : 'your-app-id',
    status : true,
    xfbml  : true,
    version: 'v2.1'
});

var facebookShare = function( callback ) {

    var options = {
        method : 'share',
        href   : 'your-url-to-share'
    }),
        status = '';

    FB.ui(options, function( response ){

        if (response && !response.error_code) {
            status = 'success';
            $.event.trigger('fb-share.success');

        } else {
            status = 'error';
            $.event.trigger('fb-share.error');
        }

        if(callback && typeof callback === "function") {
            callback.call(this, status);
        } else {
            return response;
        }
    });
}

然后您可以将click事件分配给按钮以触发共享对话框。之后,调用回调或使用“.on”jQuery方法来了解响应状态:

$('your-facebook-share-button').on('click', function( e ) {
    e.preventDefault();

    facebookShare(function( response ) {
        // simple function callback
        console.log(response);
    });
});

// custom jQuery events
$(document)
    .on('fb-share.success', function( e ) {
        console.log('success events');
    })
    .on('fb-share.error', function( e ) {
        console.log('error events');
    });

我没有测试过这段代码,但我认为它会起作用。

祝你好运!