ツイートボタンとかいいねボタンの再読み込み

javascript

  • このエントリーをはてなブックマークに追加

ツイートボタンとかいいねボタンとかのSNS系のシェアボタンをAjaxなページで初期化したかったので、 調べてみたらちゃんと用意されていた。

Twitter

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'));