Me di cuenta de esto. He aquí cómo hacer que esto funcione.
La idea general es:
- En su HTML establecer el
class
de su <a>
para el botón de compartir de Twitter para ser algo más que .twitter-share-button
. También proporcione <a>
a style="display:none;"
.
- En su HTML, donde desea que aparezca el botón de compartir de Twitter, cree un
<div>
(o <span>
) con un único id
.
- En su jQuery, cuando se desea ajustar los datos para el botón de compartir de Twitter, usted:
- 'clone()
the hidden, mis-named,
etiqueta `desde el paso # 1
- En este clon, establece la
data-url
etc. .. atributos como desee
- quitar el atributo
style
a partir del clon (mostrarla)
- Cambiar el
class
del clon a twitter-share-button
append()
este clon a su <div>
desde el paso 2.
- Utilice
$.getScript()
para cargar y ejecutar el Javascript de Twitter. Esto convertirá su clonado <a>
en un con toda la pega perfecta.
Aquí es mi HTML (en Jade):
a.twitter-share-button-template(style="display:none;", href='https://twitter.com/share=', data-lang='en',
data-url='http://urlthatwillbe_dynamically_replaced',
data-via='ckindel', data-text='Check this out!',
data-counturl='http://counturlthatwillbe_dynamically_replaced') Share with Twitter
#twitter-share-button-div
Luego, en sus Js del lado del cliente:
// the twitter share button does not natively support being dynamically
// updated after the page loads. We want to give it a unique (social_id)
// link whenver this modal is shown. We engage in some jQuery fun here to
// clone a 'hidden' twitter share button and then force the Twitter
// Javascript to load.
// remove any previous clone
$('#twitter-share-button-div').empty()
// create a clone of the twitter share button template
var clone = $('.twitter-share-button-template').clone()
// fix up our clone
clone.removeAttr("style"); // unhide the clone
clone.attr("data-url", someDynamicUrl);
clone.attr("data-counturl", someDynamicCountUrl);
clone.attr("class", "twitter-share-button");
// copy cloned button into div that we can clear later
$('#twitter-share-button-div').append(clone);
// reload twitter scripts to force them to run, converting a to iframe
$.getScript("http://platform.twitter.com/widgets.js");
que tiene las principales pistas para esta solución desde aquí: http://tumblr.christophercamps.com/post/4072517874/dynamic-tweet-button-text-using-jquery
Estoy tratando de lograr básicamente lo mismo. Traté de actualizar el atributo 'data-url' dinámicamente con esto:' $ ('. Twitter-share-button'). Attr ("data-url", "http: // mynewlink"); 'pero el javascript de twitter tiene Ya se ejecutó y esto no funciona. ¡Ayuda! – tig