Подтвердить что ты не робот

Addthis не работает с Ajax

Я загружаю все статьи с помощью Ajax, но функция Addthis не верна.

 $thisChild.load( permLink + ' #thePostStuff', function() {

И в обратном вызове упомянутой функции .load() я добавил этот код, чтобы добавить функциональность общего доступа Addthis:

var script = 'http://s7.addthis.com/js/300/addthis_widget.js?domready=1#pubid=MY-PUB-ID';
if (window.addthis){
    window.addthis = null;
}
$.getScript( script );

Код в содержимом файла permLink, вызываемый запросом ajax, который загружает Addthis script, выглядит следующим образом:

<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style addthis_32x32_style"
        addthis:url="<?php the_permalink(); ?>"
        addthis:title="<?php the_title(); ?>"
        addthis:description="<?php the_excerpt(); ?>"> 
    <a class="addthis_button_facebook"></a>
    <a class="addthis_button_twitter"></a>
    <a class="addthis_button_preferred_3"></a>
    <a class="addthis_button_compact"></a>
    <a class="addthis_counter addthis_bubble_style"></a>
</div>
<!-- AddThis Button END -->

Проблема заключается в том, что addthis не загружается, как ожидалось. Он работает правильно при первом открытии статьи, но в любое другое время (если страница не обновляется), она не может включать число, отображающее, сколько раз была разделена статья, которая появляется, как это, когда я проверяю элемент: <a class="addthis_button_expanded" target="_blank" title="View more services" href="#">1</a>

ИЗМЕНИТЬ:

Попытка известного исправления: $.getScript( script , function() { addthis.init(); });, но это не решило проблему.

РЕДАКТИРОВАТЬ 14 августа 2012 г.

Веб-сайт http://epicvan.com, и я просто удалил числа, потому что я никогда не придумывал исправления, пока я работал над ним. Проект был завершен несколько месяцев назад, поэтому я не буду тестировать новые ответы. Надеюсь, они могут помочь вам, если вы столкнулись с той же проблемой! Приветствия

4b9b3361

Ответ 1

У меня была та же проблема. Исправлено следующее. Надеюсь, что это тоже исправит.

Оригинал:

    var script = 'http://s7.addthis.com/js/300/addthis_widget.js?domready=1#pubid=MY-PUB-ID';
if (window.addthis){
    window.addthis = null;
}
$.getScript( script );

Новое:

<script>
var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1';
if (window.addthis) {
    window.addthis = null;
    window._adr = null;
    window._atc = null;
    window._atd = null;
    window._ate = null;
    window._atr = null;
    window._atw = null;
}
$.getScript(script);
</script>

Ответ 2

Я написал довольно подробное описание здесь fooobar.com/questions/401811/..., но суть в том, что addthis.toolbox(".addthis_toolbox"); - правильное решение, , но оно важно отметить, что его следует вызывать каждый раз при загрузке нового содержимого ajax.

HTML

 <div class="addthis_toolbox addthis_default_style ">
    <a class="addthis_button_facebook" style="cursor:pointer"></a> 
    <a class="addthis_button_twitter" style="cursor:pointer"></a> 
    <a class="addthis_button_email" style="cursor:pointer"></a>
 </div>

Javascript

// onload of the ajax content
addthis.toolbox('.addthis_toolbox'); 

Также обратите внимание, что все, что загружается как iframe, например счетчик facebook, вызывает проблемы, если он вложен в контейнер .addthis_toolbox. Я бы предложил разместить его внутри собственного контейнера и вызвать метод toolbox() для них обоих.

См. мою ссылку для получения более подробной информации.

Ответ 3

После 1 часа попыток пользовательских кодов я нашел этот, который отлично работает.

$(document).ajaxStop(function() {
  if (window.addthis) {
    window.addthis = null;
    window._adr = null;
    window._atc = null;
    window._atd = null;
    window._ate = null;
    window._atr = null;
    window._atw = null;
  }
  return $.getScript("http://s7.addthis.com/js/300/addthis_widget.js#pubid=sdive");
});

Это источник

Ответ 4

Попробуйте решение, указанное по этой ссылке,

http://support.addthis.com/customer/portal/questions/399867-addthis-and-ajax-with-addthis-toolbox-

<script type="text/javascript">addthis.toolbox('.addthis_toolbox');</script>
        <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=vijayk"></script>

Как и у меня тоже была проблема. Но это устраняется вышеуказанными строками. Надеюсь, это поможет.

Спасибо, Виджей

Ответ 5

addthis.toolbox(".addthis_toolbox");

Ответ 6

Я прочитал этот пост поддержки на днях, возможно, это связано с вашей проблемой: http://support.addthis.com/customer/portal/questions/240144-email-template-when-using-ajax-bug-?t=89322

Если я правильно понимаю, он описывает, что после первой акции виджет отключается от вашего профиля, и каждый будущий ресурс (без обновления) не отслеживается или что-то еще. его решение объявляло лобку отдельно. Я понятия не имею, помогает ли это вообще, но я подумал, что не помешает показать вам, что я нашел по этому вопросу.

Ответ 7

Для тех, кто пришел к этому вопросу сейчас, как я, Код, который работал у меня, был:

<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=XXXXXXXXXXXXXXXXX"></script>
<script>
if (window.addthis) {
    // for others time force addthis to run again
    window.addthis.toolbox('.addthis_toolbox');
} else {
   // in the first time use autoload bu addthis
}
</script>

Ответ 8

Проблема в том, что при вызове ajax #pubid теряется, поэтому AddThis не знает, кто выполняет вызов.

Это сработало для меня:

<script>
$.getScript("https://s7.addthis.com/js/300/addthis_widget.js#pubid=YOUR-ID", function () {
    addthis_config = { pubid: 'YOUR-ID' };
    addthis.init();
});
</script>

Нашел ответ на этот вопрос на сайте поддержки addthis.com: http://support.addthis.com/customer/portal/questions/240144-email-template-when-using-ajax-bug-?t=89322

Ответ 9

Выполнение этой строки кода после вызова AJAX работает для меня:

addthis.layers.refresh();

Ниже приведена моя настройка для AddThis

Script

<script type="text/javascript" 
        src="//s7.addthis.com/js/300/addthis_widget.js#pubid=<my_pub_id>">
</script>

Я помещаю этот код, где хочу AddThis показать

<div class="addthis_inline_share_toolbox_tvqk"></div>

Как я делаю вызов AJAX

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState === 4 && this.status === 200) {

        // Update the DOM

        if (typeof(addthis) != 'undefined' && addthis != null) 
            addthis.layers.refresh();
    }
};
xhttp.open("POST", "<address_to_post_back_to>", true);
xhttp.send(<post_data>);

Результат

введите описание изображения здесь