2014-10-03 106 views
4

我期待檢測一個頁面上的Facebook共享是否成功,並在成功後更改一個框的值。我可以很好地處理後者,但在執行實際共享檢測方面稍微有些失落。我找到了Google,發現了FB.ui,但是我怎麼才能將它實現到一個頁面中並讓它運行檢測?檢測Facebook共享成功?

+0

你爲什麼要檢測它? – WizKid 2014-10-03 16:23:23

+0

如果他們在產品頁面上完成分享,我們將爲用戶提供折扣/特價促銷。 – 2014-10-03 16:50:14

+0

根據Facebook平臺政策,您不能閱讀https://developers.facebook.com/policy。所以,節省你的時間,你的網頁不會被禁止從Facebook – WizKid 2014-10-03 16:52:10

回答

2

首先,你必須包括Facebook的sdk.js庫來使用其所有方法(body標籤開幕後最好右)

<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/Facebook分享 VAR的範圍。所以,在這個例子中,只是將其包含在窗口對象:

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

我不知道你是如何安排你的代碼,但是,這種改變就必須工作。

您可以點擊此處查看:http://jsfiddle.net/benjasHu/3dhq9k21/

乾杯。

+0

benjasHu,這個伎倆。我也做了一些小改動,把所有的javascript都放在了頁腳中,除了剛開始的body標籤之後的最初的sdk.js庫調用。它像一個魅力! – 2014-10-06 13:47:50

+0

我很高興你讓它工作! :)如果您認爲這是正確的答案,請將其標爲正確;)謝謝! – benjasHu 2014-10-06 13:52:59

+0

巧妙地使用自定義回調,謝謝! – 2015-09-13 17:13:54

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; 
     } 
    }); 
} 

然後,您可以將點擊事件分配給您的按鈕來激發共享對話框。在此之後,調用回調或使用「對」 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'); 
    }); 

我還沒有測試此代碼,但我認爲這是可行的。

祝你好運!

+0

需要一點調整,但我認爲這可能會有所幫助。我欣賞它benjasHu! – 2014-10-03 19:48:38

+0

不客氣! – benjasHu 2014-10-03 20:10:53

+0

我嘗試過調整,但我非常新的w/Facebook的API,並沒有與js/jQuery(還!)最大。 這看起來像我在正確的軌道上嗎? [鏈接](http://jsfiddle.net/ysdp60cz/)http://jsfiddle.net/ysdp60cz 請記住,我沒有更新應用程序ID和網站的URL與適當的信息,該應用程序是公開的等。 – 2014-10-03 20:23:19