「公式ツイートボタンが重い」「iframe版だと幅が揃わない」などの理由から、自作のボタンを作成してみることにしました。 本ブログには適用済み、ついでにはてブも自作ボタンに変更しています。

※サンプルでは大中小3種類のclassを用意しています。
※ツイート数、はてブ数の取得はAPIを使用
※jQuery1.6.2を使用

追記:
「横幅を同じにして、縦に並べることはできないか」というお問い合わせを頂きました。
CSSと画像を調整すれば可能ですが、作成する余裕がありません…。

取り急ぎ、数字を取得して挿入するだけのサンプルを用意しました。

※分かりやすいように、一部、外部JSに変更しました。
※時間がとれたら横幅揃えたバージョンも作ってみます。

以下ソースです。

ソース

HTML

<ul class="social-link">
	<li id="twitter"></li>
	<li id="hatebu"></li>
</ul>

JavaScript

<script src="http://www.google.com/jsapi"></script>
<script>google.load('jquery', '1.6.2');</script>
<script>
$(function(){
	var url = document.location.protocol + '//' + document.location.host + document.location.pathname;
	var text = document.title;

	/* 引数:挿入ID、使用するclass名、ツイート数を取得したいURL、ツイート用テキスト */
	tweetlink('twitter', 'tweet-medium', url, text);

	/* 引数:挿入ID、使用するclass名、はてブ数を取得したいURL */
	hatebulink('hatebu', 'hatebu-medium', url);
});

var tweetlink = function(_id, _class, _url, _text){
	_url = encodeURI(_url);
	_text = encodeURIComponent(_text);

	$.getJSON('http://urls.api.twitter.com/1/urls/count.json?url=' + _url + "&callback=?", function(data) {
		$('<a>',{
			'href': 'http://twitter.com/share?url=' + _url + '&text=' + _text,
			'title': 'ツイートする',
			'class': _class,
			'target': '_blank'
		})
		.append(
			$('<span>')
			.html(data.count)
		)
		.appendTo($('#' + _id));
	});
};

var hatebulink = function(_id, _class, _url){
	_url = encodeURI(_url);

	$.getJSON('http://api.b.st-hatena.com/entry.count?url=' + _url + "&callback=?", function(data) {
		$('<a>',{
			'href': 'http://b.hatena.ne.jp/entry/' + _url,
			'title': 'はてブする',
			'class': _class,
			'target': '_blank'
		})
		.append(
			$('<span>')
			.html(data)
		)
		.appendTo($('#' + _id));
	});
};
</script>

Facebookのいいね!もAPIで取得できるそうですが、いいね!解除のやり方が分からず保留。
Googleの+1は公式APIはまだ提供されていないそうで、これまた保留。
Facebookは重い印象があるので、早めに対応したいですね。

今回、こちらの記事を参考にさせていただきました。

この場を借りて御礼申し上げます。