2012-03-10 14 views
13

Sto caricando tutti gli articoli con l'Ajax, ma la funzionalità Addthis non è correttoAddthis non funziona con l'Ajax

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

E nel callback di detto .load() la funzione, ho aggiunto questo codice per portare in funzionalità Bookmark at:

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

il codice all'interno del contenuto del file permalink chiamato dalla richiesta Ajax che carica lo script Addthis è il seguente:

<!-- 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 --> 

Il problema è che addthis non si sta caricando come previsto. Funziona correttamente la prima volta che viene aperto un articolo, ma in qualsiasi altro momento (a meno che la pagina non venga aggiornata) non riesce a includere il numero che mostra quante volte l'articolo è stato condiviso, che appare come questo quando ispeziono l'elemento: <a class="addthis_button_expanded" target="_blank" title="View more services" href="#">1</a>

EDIT:

ha tentato una correzione noto: $.getScript(script , function() { addthis.init(); });, ma questo non ha risolto il problema.

EDIT 14 agosto 2012

Il sito è http://epicvan.com e ho appena tolto i numeri perché non ho mai si avvicinò con una correzione mentre stavo lavorando su di esso. Il progetto è stato completato mesi fa, quindi non testerò le nuove risposte. Spero che possano aiutarti se incontri lo stesso problema! Acclamazioni

+0

ho avuto lo stesso problema e [i risolvere in questo post] (http://stackoverflow.com/a/40352925/7097461), quindi prova a vedere –

risposta

33

Ho avuto lo stesso problema. Risolto il problema con il seguente. Spero che lo risolva anche per te.

originale:

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

Nuovo:

<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> 
+0

questo ha funzionato per me. grazie –

+1

Sono contento che ci abbia aiutato. –

+0

Finalmente la ricerca è finita :) – joaerl

0

ho letto questo supporto post, l'altro giorno, si potrebbe avere a che fare con il problema: http://support.addthis.com/customer/portal/questions/240144-email-template-when-using-ajax-bug-?t=89322

Se ho ben capito descrive che dopo la prima azione, il widget viene disconnesso dal tuo profilo e ogni quota futura (senza aggiornamento) non viene tracciata o altro. la sua soluzione stava dichiarando lo pubblico separatamente. Non ho idea se questo sia di aiuto, ma ho pensato che non sarebbe stato male mostrarvi cosa ho trovato sull'argomento :)

2

provare la soluzione data a questo link,

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> 

Come mi è stato anche affrontando lo stesso problema. Ma questo viene risolto dalle linee precedenti. Spero che questo aiuti.

Grazie, Vijay

+0

Grazie la risposta corretta: D !! – Seeker

+0

La console dice che addthis non è definito, non esiste alcun metodo .toolbox per 'undefined'. Trovo questo strano dal momento che questa è una risposta popolare in tutto il forum, ma non ho ottenuto alcun risultato positivo da esso – Xtremefaith

0

Per quelli arrivati ​​a questa domanda ora come me, Il codice che ha funzionato per me è stato:

<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> 
1
addthis.toolbox(".addthis_toolbox"); 
5

ho scritto una descrizione abbastanza dettagliata qui https://stackoverflow.com/a/16950881/1118070 ma , il succo è che addthis.toolbox(".addthis_toolbox"); è la soluzione corretta, ma è importante notare che dovrebbe essere chiamato ogni volta che viene caricato il nuovo contenuto Ajax ed.

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

Si noti inoltre che tutto ciò che i carichi come iFrame come il facebook come contatore, sarà causare problemi se si è annidato all'interno di un contenitore '.addthis_toolbox'. Suggerirei di inserirlo all'interno del proprio contenitore e richiamare il metodo toolbox() su entrambi.

Vedere il mio collegamento per ulteriori dettagli.

4

Dopo 1 ora di tentativi di codici personalizzati ho trovato questo perfetto.

$(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"); 
}); 

Questo è il problema source

1

è che su un ajax chiamare il #pubid è perdersi in modo AddThis non sa che sta facendo la chiamata.

questo ha funzionato per me:

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

trovato la risposta a questo problema sul sito di supporto di AddThis.com: http://support.addthis.com/customer/portal/questions/240144-email-template-when-using-ajax-bug-?t=89322

0

L'esecuzione di questa riga di codice, dopo una chiamata AJAX funziona per me:

addthis.layers.refresh();

Qui di seguito è la mia messa a punto per AddThis

Script

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

Ho messo questo codice dove mi trovo nt AddThis per mostrare

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

Come faccio AJAX chiamare

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

Risultato

enter image description here