web-dev-qa-db-fra.com

Existe-t-il un rappel pour le bouton Tweet de Twitter?

Est-il possible d'inscrire un rappel sur le bouton Tweet de Twitter? J'aimerais pouvoir savoir quels utilisateurs de mon site ont tweeté un lien. Je ne peux pas ajouter d'événement onClick car il s'agit d'un iFrame interdomaine. D'autres idées?

J'ai vu une façon de le faire mais cela ne semble pas fiable. Leur documentation ne mentionne rien, alors je cherche de l'aide pour résoudre ce problème.

33
jbnunn

Twitter a Événements d'intention Web pour loaded, rendered, resize, Tweet, follow, retweet, like et click.

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

Le comportement a été modifié à l'automne 2015 en raison du manque de fiabilité des rappels se produisant après la fin d'un événement.

Ils seront désormais déclenchés lorsqu'un utilisateur invoquera l'action de votre page plutôt qu'après son exécution.

Exemple de chargement de 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>
46
abraham

Je viens de mettre en œuvre un événement de rappel Tweet. 

Plus d'informations sur l'événement de rappel sur Twitter
- Twitter Web Intents
- Web Intents Javascript Events

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

Le bouton Tweet:

 <a href="http://Twitter.com/intent/tweet?url=http://test.com;via=stack">Twitter</a>
23
Jhony Fung

Si vous chargez le Twitter Widgets JS, vous pouvez associer une fonction de rappel à l'événement Tweet. Voir le code ci-dessous:

<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>
4
James Lawruk

oui, il existe une fonction de rappel. pour les boutons Twitter personnalisés aussi ... vous pouvez le trouver ici: https://dev.Twitter.com/discussions/671

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

Exemple de travail

0
Muhammad Tahir