Is there a callback for Twitter's Tweet Button?
Twitter has Web Intent events for loaded
, rendered
, resize
, tweet
, follow
, retweet
, like
, and click
.
twttr.events.bind( 'tweet', function (event) { // Do something there });
The behavior was changed in the fall of 2015 due to the unreliableness of callbacks happening after an event is complete.
They will now be triggered when a user invokes the action in your page, rather than after the action is completed.
<script>// Performant asynchronous method of loading widgets.jswindow.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 listenerstwttr.ready(function (twttr) { twttr.events.bind('tweet', function(event) { console.log(event); });});</script>
I have just implemented a tweet callback event.
More information on Twitter's callback event
- Twitter Web Intents
- Web Intents Javascript Events
The Javascript callback
$.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); });
The tweet button:
<a href="http://twitter.com/intent/tweet?url=http://test.com;via=stack">twitter</a>
If you load the Twitter Widgets JS, you can bind a callback function to the tweet event. See the code below:
<a href="https://twitter.com/intent/tweet?url=http://yoursite.com/about&text=Message">Twitter</a><script> //Twitter Widgets JSwindow.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 eventtwttr.ready(function(twttr) { twttr.events.bind('tweet', function (event) { console.log('tweet, tweet'); });});</script>