ツイートボタンとかいいねボタンとかのSNS系のシェアボタンをAjaxなページで初期化したかったので、 調べてみたらちゃんと用意されていた。
HTML
<!-- 事前にtwitter-widgetの読み込み -->
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
もしくはJS側でwidgetを読み込んでおく。
// 事前にtwitter-widgetの読み込み
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"));
JavaScript
// 任意のタイミングで更新
twttr.widgets.load();
// DOMを引数で指定すると、その子要素を探索するので速くなる
twttr.widgets.load(document.getElementById('contents'));
Facebook like button
HTML
<!-- 事前にJavascriptSDKの読み込み -->
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1&appId=*****";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
JavaScript
// 任意のタイミングで更新
FB.XFBML.parse();
// DOMを引数で指定すると、その子要素を探索するので速くなる
FB.XFBML.parse(document.getElementById('contents'));