2011-02-09 110 views
30

有沒有辦法在Twitter的Tweet按鈕上註冊回調?我希望能夠跟蹤我網站上的哪些用戶推送了一個鏈接。我無法添加onClick事件,因爲它是跨域的iFrame。任何其他想法?我看過one way to do it但它似乎不可靠。 Their documentation沒有提到任何內容,所以我正在尋找解決方法的幫助。Twitter的Tweet按鈕有回撥嗎?

回答

45

Twitter已經Web Intent eventsloadedrenderedresizetweetfollowretweetlikeclick

twttr.events.bind(
    'tweet', 
    function (event) { 
    // Do something there 
    } 
); 

在2015年秋季,由於回調後發生的事件是完全的unreliableness的behavior was changed

現在,當用戶在頁面中調用動作時,而不是在動作完成後觸發它們。

Example loading widgets.js

<script> 
// Performant asynchronous method of loading widgets.js 
window.twttr = (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0], 
    t = window.twttr || {}; 
    if (d.getElementById(id)) return t; 
    js = d.createElement(s); 
    js.id = id; 
    js.src = "https://platform.twitter.com/widgets.js"; 
    fjs.parentNode.insertBefore(js, fjs); 

    t._e = []; 
    t.ready = function(f) { 
    t._e.push(f); 
    }; 

    return t; 
}(document, "script", "twitter-wjs")); 
</script> 

<script> 
// Wait until twttr to be ready before adding event listeners 
twttr.ready(function (twttr) { 
    twttr.events.bind('tweet', function(event) { 
    console.log(event); 
    }); 
}); 
</script> 
+3

意圖確實是要走的路。奇蹟般有效。 – montrealist 2012-03-19 19:14:32

+0

查看下面的James Ruruk的答案 – severin 2013-09-04 16:01:22

+0

任何其他人在IE上的Web意圖事件有問題? – 2014-01-06 18:56:54

23

我剛剛實施了鳴叫回調事件。

在Twitter上的回調事件的更多信息
- Twitter Web Intents
- Web Intents Javascript Events

的JavaScript回調

$.getScript("http://platform.twitter.com/widgets.js", function(){ 
    function handleTweetEvent(event){ 
    if (event) { 
     alert("This is a callback from a tweet") 
    } 
    } 
    twttr.events.bind('tweet', handleTweetEvent);   
}); 

的鳴叫按鈕:

<a href="http://twitter.com/intent/tweet?url=http://test.com;via=stack">twitter</a> 
-3
<a href="https://twitter.com/IamAnessaReyes" class="twitter-follow-button" data-show-count="false">Follow @IamAnessaReyes</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 
4

如果加載Twitter的小工具JS,你可以綁定一個回調函數的鳴叫事件。請參見下面的代碼:

<a href="https://twitter.com/intent/tweet?url=http://yoursite.com/about&text=Message">Twitter</a> 

<script>   
//Twitter Widgets JS 
window.twttr = (function (d,s,id) { 
var t, js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) return; js=d.createElement(s); js.id=id; 
js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); 
return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } }); 
}(document, "script", "twitter-wjs")); 

//Once twttr is ready, bind a callback function to the tweet event 
twttr.ready(function(twttr) {  
    twttr.events.bind('tweet', function (event) { 
     console.log('tweet, tweet'); 
    }); 
}); 
</script> 
0
function loguser(event) { 
    if (event) { 
     alert('Tweeted'); 
     console.log(event); 
    } 
} 

window.twttr = (function (d,s,id) { 
    var t, js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; js=d.createElement(s); js.id=id; 
    js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); 
    return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } }); 
    }(document, "script", "twitter-wjs")); 

twttr.ready(function (twttr) { 
    twttr.events.bind('tweet', loguser); 
}); 

Working Example