あまり新しくないもの

新しさはそんなに求めず、自分のすきなことをやりたい人生だった

Tweet後のコールバックをとる

サイト内でツイートしてもらって、その完了を確認して何かしら関数を実行したい時があると思います。(僕は有りました)

そういう時に使うやつです。

なお、IE8以下ではイベントが上手く発火しないので動かないのと、スマートフォンでは別タブでのjs実行がそもそも難しいのでうまくいかないです。PCのモダンブラウザとIE9以上のみです。

var Twitter = {

    init: function(callback) {
        var self = this;
        window.twttr = _chktwttr(document, 'script', 'twitter-wjs');
        window.twttr.ready(function (twttr) {
            self._setCallback(callback);
        });

    },

    _setCallback: function(callback) {
        twttr.events.bind('tweet', function(e) {
            if( typeof(callback) == 'function') {
                callback();
            }
        });
    },

    _chktwttr: function(d,s,id) {
        var t, js, fjs = d.getElementsByTagName(s)[0];
        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); } });
    }

};

こういうオブジェクトを用意して、

<a href="https://twitter.com/intent/tweet?text=test" class="tweet">ツイートする</a>

<script>
Twitter.init(function() {
    // ツイート完了後に実行される
    console.log('complete tweet');
});
</script>

呼び出します。ツイートボタンの呼び出し先はintentになってます。そこだけ注意すれば後は普通に使えばおっけーです。