2011-09-02 15 views
9

im usando los botones http://sharethis.com/ para darles a los usuarios de un sitio web una forma sencilla de compartir contenido.¿Cómo crear dinámicamente "Compartir estos botones" con una URL personalizada con una función de JavaScript?

Tienen información sobre "botones personalizados" aquí: http://help.sharethis.com/customization/custom-buttons

Parece que para especificar la URL, en el ejemplo de todo lo que tienen es sólo html así:

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

pero necesito ser capaz de crear dinámicamente botones sobre la marcha sin tener que volver a cargar la página.

Por lo tanto, en una aplicación flash que estoy construyendo tengo un "botón para compartir" que desencadena una función javascript en la página web que hace un fade "popup" en el centro de la pantalla que quiero mostrar botones. Dependiendo del botón de compartir al que haga clic, deberá tener una URL creada dinámicamente.

Es importante que cierren el cuadro de diálogo, luego haz clic en el botón compartir nuevamente, esperando que el código sobrescriba el código anterior con botones nuevos, con la nueva url/títulos.

Por lo tanto, he creado esta función de javascript que llamo desde el flash, al pasar la url de flash. Coloqué el script y todo dentro de mi div "popup", esperando que los botones se rendericen dentro de ese 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(); 
} 

¿Alguien podría publicar un ejemplo de cómo podría hacer esto sin tener que volver a cargar la página?

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> 

Básicamente no pasa nada. Odio usar javascript porque realmente no tengo idea de cómo obtener mensajes de error o depurar. Cuando trabajo con flex, tengo un gran depurador/consola para resolver. Por lo tanto, lamento tener problemas para proporcionar más información. Lo noté cuando eliminé solo el

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

Aparecerá la ventana emergente.

Pero si tengo el código setAttribute anterior dentro de la función, la ventana emergente nunca aparece, así que estoy asumiendo que algo en ese código está rompiéndola. ¿Alguna sugerencia? ¿O al menos una forma en que podría usar Chrome para decirme cuál es el error? Intenté la consola del elemento de inspección pero no había nada que apareciera allí cuando activé la función.

Además, en la parte superior de mi código que tenían uso de mí:

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

debo utilizar stLight.locateElements(); en lugar de stButtons.locateElements();

+0

Hay un error en el código, que tiene 'alam' y 'Chaan', es por eso que no está funcionando, el cambio 'alam' a 'Chaan' por el título y debe hacer maravillas. Para el registro, las herramientas> Javacript console en chrome lo llevarán al depurador. Si vas allí antes de cambiar, debería tener un error 'Unbeught ReferenceError: chann no está definido' –

Respuesta

15

He estado usando el

stButtons.locateElements(); 

función para generar nuevos botones después de cargar el contenido a través de AJAX, me imagino que funcionará para esto también.

Esta pregunta podría ser de alguna ayuda también:

Sharethis button does not work on pages loaded via ajax

Mejor Solución:

Haga su <div> y asegúrese de que todas las <span> s tienen ID, de lo contrario se les puede dar clases pero necesitará iterar a través de todos ellos.

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

Entonces, estás diciendo que solo haría las clases span en el html ... Entonces lo que podría hacer es en mi función que se desencadena desde el flash ... simplemente use 'stButtons.locateElements();' para alterar de algún modo el URL/TITLE cuando se ejecuta la función? ¿Te importaría mostrarme cómo se usa para modificar la url/título? Lo siento, soy bastante bueno con actionsctipt. Muy nuevo para javascript y ajax. ¡Lo siento! – brybam

+0

es eso lo que buscas? Es un poco duro. –

+0

impresionante, eso tiene sentido. Eso parece exactamente lo que estoy tratando de hacer ... pero después de una prueba Simplemente no está funcionando. Publiqué cierta información arriba. ¿Te importa echar un vistazo rápido a la edición? ¡Muchas gracias! – brybam

Cuestiones relacionadas