Кнопки Twitter на AJAX страницах.

28 апреля 2013

Понадобиось для создания конкурса разместить много кнопок twitter на одной странице с "бесконечным" скроллом (новые данные под гружались при помощи AJAX).

На оф. сайте было найдено решение, которое должно было работать, но не работало :( А именно выдавало:

Uncaught TypeError: Cannot call method 'load' of undefined

Рабочее решение оказалось довольно простым.

В <head>:

<script type="text/javascript">
    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"));
  </script>

Ну и на самих AJAX страницах:

<script>setTimeout('twttr.widgets.load(document.getElementById(\'block_id\'));', 1000);</script>

Где block_id - id блока, содержащего нужные кнопки.

З.Ы. А от голосования при помощи твиттера мы отказались: можно несколько раз проголосовать за одного конкурсанта.