Кнопка Sharethis не работает на страницах, загруженных через ajax

Я пытаюсь использовать кнопку sharethis на странице, загружаемой через ajax. Кнопки не отображаются. Пожалуйста, помогите.

С уважением, Панкай

Ответы

Ответ 1

После добавления нового контента в dom вызовите

stButtons.locateElements();

// or if you want to be a bit defensive about whether the lib has been
// loaded or not:
if (window.stButtons){stButtons.locateElements();} // Parse ShareThis markup

Статья еще еще

Ответ 2

Обновлено 09/2017 Ответ

Объект stButtons больше не существует, теперь вы можете использовать

window.__sharethis__.initialize()

Чтобы повторно инициализировать кнопки

Ответ 3

Это решение также будет работать для основанных на NodeJS фреймворков, таких как Meteor.

stButtons.locateElements();

требуется в обработанном обратном вызове шаблона, чтобы гарантировать, что кнопки shareThis будут отображаться при перенаправлении страницы.

Ответ 4

Я столкнулся с такой же проблемой с разбивкой по сайтам sharethis и Ajax. Кнопки не показывались после сообщений, загруженных Ajax, поэтому я искал и нашел это. Я только что добавил функцию stButtons.locateElements(); в Ajax success:

что-то вроде success: stButtons.locateElements();

Надеюсь, это будет полезно для кого-то вроде меня.

Спасибо Ibnul

Ответ 5

Для нового API следующее решение работало для меня

if (__sharethis__ && __sharethis__.config) {
    __sharethis__.init(__sharethis__.config);
}

Добавьте этот код после загрузки содержимого ajax.

Ответ 6

сделай это:

window.__sharethis__.load('inline-share-buttons', config);

и настроить ваши кнопки с помощью JavaScript.

Ответ 7

В drupal вы можете добиться этого, добавив следующий код

(function($){
 Drupal.behaviors.osShareThis = {
attach: function(context, settings) {
  stLight.options({
    publisher: settings.publisherId
  });
  // In case we're being attached after new content was placed via Ajax,
  // force ShareThis to create the new buttons.
  stButtons.locateElements();
}
};
});

Ответ 8

Я нашел следующее решение на одном из форумов addThis, и он отлично поработал у меня. Я вызвал функцию как обратный вызов моего вызова ajax. Hoep помогает

<script type="text/javascript">
       function ReinitializeAddThis(){
      if (window.addthis){
         window.addthis.ost = 0;
         window.addthis.ready();
      }
   }
...
$('#camps-slide .results').load(loc+suffix, function() {ReinitializeAddThis();});
</script>