NOTES : 2012-02-11 : WEB

ソーシャルライブラリの読込みをコンパクトに

最近はソーシャル系のウィジットを読み込む事が多くなりました。場合によっては1ページにいくつも表示する場合があると思います。
それぞれのサービスの貼付けコードをそのまま拾って来てもいいのですが、注意してコーディングしないと、同じライブラリを重複して読み込んだり、fb-rootのidが多重に配置されたりしてしまいます。

また、最近は大手のライブラリはほとんど非同期読み込みに対応しているので、なるべくそちらを使ったほうがいいのですが、これもまた似たようなコードばかりで無駄が多くなってしまいます。

そこで、「まとめ非同期読み込み」が一時期流行ったのですが、自分用に少し改造したコードをいつも忘れそうになるので、メモがわりに投稿しておきます。

読込みコード

<div id="fb-root"></div>
<script type="text/javascript" src="script/ga_social_tracking.js"></script>
<script>(function(t,d,s) {
var j,f=d.getElementsByTagName(s)[0],a=function(u,i,o){if(d.getElementById(i)){return;}
j=d.createElement(s);j.src=u;j.id=i||null;j.onload=o||null;j.async=true;f.parentNode.insertBefore(j,f);};
 
t._gaq=[["_setAccount","UA-XXXXXXX-X"],["_trackPageview"],["_trackPageLoadTime"]]; // GoogleAnalytics Setting
a(("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js"); // GoogleAnalytics
a('https://apis.google.com/js/plusone.js','gplus1js');t.___gcfg={lang:"ja"}; // Google+
a('//connect.facebook.net/ja_JP/all.js#xfbml=1','fbjssdk',_ga.trackFacebook); // Facebook
a('//platform.twitter.com/widgets.js','tweetjs',_ga.trackTwitter); // Twitter
a("//b.st-hatena.com/js/bookmark_button_wo_al.js"); // Hatena
a("//static.mixi.jp/js/share.js"); // Mixi
 
}(this,document,'script'));</script>

これを body ダグの最後尾に追加しておきます。

2行目の「ga_social_tracking.js」は、ボタンが押されたイベントを Google Analytics に反映させるスクリプトで、analytics-api-samplesのページに有ります。Raw SourceのURLで、そのまま読み込んでもいいかもしれません。

8行目からの a ファンクションで各ライブラリを読み込みます。これ以外のサービスも、同じような非同期読み込みに対応してる物ならば、この行の追加で対応できるかと思います。
また、必要のないサービスは1行づつコメントアウトさせるだけ(Google Analyticsの場合はSettingの行も)で無効にできます。

a( jsライブラリのURL , 生成されるタグのid , onloadで実行させるコールバック );

ボタン表示コード サンプル

<ul id="social-shares">
    <li><div class="g-plusone" data-size="medium" data-count="false" data-href="http://example.com"></div></li>
    <li><div class="fb-like" data-send="false" data-layout="button_count" data-href="http://example.com"></div></li>
    <li><a data-text="" data-url="http://example.com" data-count="none" href="http://twitter.com/share" class="twitter-share-button" data-lang="ja" ></a></li>
    <li><a href="http://mixi.jp/share.pl" data-key="XXXXXXX" data-url="http://example.com" class="mixi-check-button">mixiチェック</a></li>
    <li><a href="http://b.hatena.ne.jp/entry/" class="hatena-bookmark-button" data-hatena-bookmark-layout="standard"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="Add Bookmark" /></a></li>
</ul>

ここでは自分の趣味で、なるべく XML名前空間 を使わずに記述しています。

コメント (0件) - 表示・投稿 ▼