Кнопка 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>