我想要检测网页上的Facebook共享是否成功,并且在成功时更改框的值。我可以很好地处理后者,但是如何执行实际的共享检测有点丢失。我是Google并找到了FB.ui,但是如何将其实际应用到页面中并让它运行检测?
答案 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');
});
我没有测试过这段代码,但我认为它会起作用。
祝你好运!