【问题标题】:Is there a callback for Twitter's Tweet Button?Twitter的推文按钮有回调吗?
【发布时间】:2011-06-24 06:51:55
【问题描述】:

有没有办法在 Twitter 的 Tweet 按钮上注册回调?我希望能够跟踪我网站上的哪些特定用户发布了链接。我无法添加 onClick 事件,因为它是跨域 iFrame。还有其他想法吗?

我见过one way to do it,但它似乎不可靠。 Their documentation 没有提及任何内容,因此我正在寻求解决方法的帮助。

【问题讨论】:

    标签: jquery api twitter callback


    【解决方案1】:

    Twitter 有 Web Intent events 用于 loadedrenderedresizetweetfollowretweetlikeclick

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

    2015 年秋季的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>
    

    【讨论】:

    • 意图确实是要走的路。像魅力一样工作。
    • 查看下面 James Lawruk 的回答以获取示例
    • @abraham 你知道成功的推文是否有回调吗?这仅在您单击推文按钮后触发(即显示窗口对话框而不是成功推文)
    • 正如@JohnRuddell 所问的,如果我们获得了推文意图的状态(即推特或取消),回调将非常有用。 :'(
    【解决方案2】:
    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

    【讨论】:

      【解决方案3】:

      如果您加载 Twitter Widgets JS,您可以将回调函数绑定到 tweet 事件。请看下面的代码:

      <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>
      

      【讨论】:

      • 回调有没有办法获取推文的内容?或者什么是获得它的正确方法?谢谢。
      • 好问题。我不知道。
      • 看起来答案是否定的。 twitter.com/kurrik/status/433752897730256897。我认为@abraham 的twitteroauth 是要走的路。谢谢。
      【解决方案4】:
      <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>
      

      【讨论】:

      • 纯代码答案不好。你应该添加一个解释。
      【解决方案5】:

      是的,有一个回调函数。也适用于自定义 Twitter 按钮。 你可以在这里找到它:https://dev.twitter.com/discussions/671

      【讨论】:

        【解决方案6】:

        我刚刚实现了一个推文回调事件。

        更多关于 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>
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 2012-03-26
        • 2014-02-11
        • 1970-01-01
        相关资源
        最近更新 更多