2011-02-09 79 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