2011-09-02 12 views
9

im utilizzando i pulsanti http://sharethis.com/ per offrire agli utenti di un sito Web un modo semplice per condividere il contenuto.Come creare dinamicamente "Condividi questi pulsanti" con un URL personalizzato con una funzione javascript?

Hanno informazioni su "pulsanti personalizzati" qui: http://help.sharethis.com/customization/custom-buttons

cosa assomiglia a specificare l'URL, nell'esempio tutto ciò che hanno il suo solo html come questo:

<span class="st_sharethis" st_url="http://mycustomurl.com" st_title="Sharing Rocks!" 
displayText="ShareThis"></span> 

ma ho bisogno di essere in grado di creare dinamicamente i pulsanti al volo senza ricaricare la pagina.

Quindi, in un'applicazione flash sto costruendo ho un "pulsante di condivisione" che attiva una funzione javascript nella pagina Web che fa dissolvere un "popup" al centro dello schermo che voglio mostrare la condivisione pulsanti. A seconda del pulsante di condivisione che qualcuno fa clic dovrà disporre di un URL creato dinamicamente.

È importante chiudere la finestra di dialogo, quindi fare nuovamente clic sul pulsante di condivisione, sperando che il codice sovrascriva il vecchio codice con nuovi pulsanti, con il nuovo URL/titoli.

Così, ho creato questa funzione javascript che chiamo dal flash, passando l'url dal flash. Ho inserito lo script e tutto ciò che è contenuto nel mio "popup" div, sperando che i pulsanti vengano renderizzati all'interno di quel div.

function shareChannel(theurl) 
{ 
//I cant seem to find an example of what to put here to load the buttons, and give them a custom URL and title 

//finally display the popup after the buttons are made and setup. 
displaypopup(); 
} 

qualcuno potrebbe eventualmente pubblicare un esempio di come potrei essere in grado di farlo senza mai ricaricare la pagina?

EDIT: @Cubed

<script type="text/javascript"> 
function shareChannel(chaan) 
      { 

      document.getElementById('spID1').setAttribute('st_url', 'http://mycustomurl?chan='+chaan); 
      document.getElementById('spID1').setAttribute('st_title', 'Custom Title is ['+chann+'] it works!'); 

      stButtons.locateElements(); 

      centerPopupThree(); 
      loadPopupThree(); 
      } 

</script> 

Fondamentalmente non succede nulla. Odio usare javascript perché non ho idea di come ottenere messaggi di errore o debug. Quando lavoro con flex, ho un ottimo debugger/console con cui fare confusione. Quindi, mi dispiace aver problemi a fornire maggiori informazioni. Ho notato quando rimuovo solo il

document.getElementById('spID1').setAttribute('st_url', 'http://mycustomurl?chan='+chaan); 
       document.getElementById('spID1').setAttribute('st_title', 'Custom Title is ['+chann+'] it works!'); 

Viene visualizzata la finestra popup.

Ma se ho il suddetto codice setAttribute all'interno della funzione, il popup non appare mai, quindi suppongo che qualcosa in quel codice lo stia rompendo. Eventuali suggerimenti? O almeno un modo in cui potrei usare chrome per dirmi qual è l'errore? Ho provato la console di Inspect Element ma non c'era nulla che apparisse lì quando ho attivato la funzione.

Inoltre nella parte superiore del mio codice mi hanno fatto uso:

<script type="text/javascript">var switchTo5x=true;</script> 
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"> 
</script><script type="text/javascript">stLight.options({publisher:'mypubidgoeshere'});</script> 

Dovrei usare stLight.locateElements(); piuttosto che stButtons.locateElements();

+0

C'è un errore di battitura nel codice, è necessario 'chann' e 'chaan', è per questo che non funziona, cambiare 'chann' a 'chaan' per il titolo e dovrebbe fare miracoli. Per la cronologia, la console Strumenti> Javacript in chrome ti porterà al debugger. Se vai lì prima di cambiare, dovrebbe avere un errore 'Uncaught ReferenceError: chann non è definito' –

risposta

15

Sto usando il

stButtons.locateElements(); 

per generare nuovi pulsanti dopo aver caricato il contenuto tramite AJAX, immagino che funzionerà anche per questo.

Questa domanda potrebbe essere di qualche aiuto anche:

Sharethis button does not work on pages loaded via ajax

soluzione migliore:

Fai la tua <div> e assicurarsi che tutte le <span> s dispongono di ID, altrimenti si può dare loro classi, ma si avrà bisogno di scorrere tutti loro.

function shareChannel(theurl, thetitle) 
    { 
    document.getElementById('spanID1').setAttribute('st_url', theurl); 
    document.getElementById('spanID1').setAttribute('st_title', thetitle); 

    stButtons.locateElements(); 

    //finally display the popup after the buttons are made and setup. 
    displaypopup(); 
    } 
+0

Quindi, stai dicendo che vorrei solo fare le classi di span nell'html ... Quindi quello che potrei fare è nel mio funzione che viene attivata dal flash ... basta usare 'stButtons.locateElements();' per modificare in qualche modo l'URL/TITLE quando viene eseguita la funzione? Ti dispiacerebbe mostrarmi come è stato usato per alterare l'url/titolo? Scusa, sono abbastanza bravo con actionsctipt. Molto nuovo per javascript e ajax. Scusate! – brybam

+0

è quello che il tuo dopo? È un po 'approssimativo. –

+0

fantastico, questo ha senso. Sembra esattamente quello che sto cercando di fare ... ma dopo un test, semplicemente non funziona. Ho pubblicato alcune informazioni sopra. Ti darò una rapida occhiata alla modifica? Molte grazie! – brybam

Problemi correlati