L'ho capito. Ecco come farlo funzionare.
L'idea generale è:
- nel codice HTML impostare la
class
del <a>
per il pulsante di condivisione Twitter di essere qualcosa di diverso da .twitter-share-button
. Dare anche il <a>
a style="display:none;"
.
- Nel codice HTML in cui si desidera visualizzare il pulsante di condivisione di Twitter, creare uno
<div>
(o <span>
) con un id
univoco.
- Nella tua jQuery, quando si desidera impostare i dati per il pulsante di condivisione Twitter si vuole:
- 'clone()
the hidden, mis-named,
`tag dal passaggio # 1
- Su questo clone, impostare il
data-url
etc. .. attributi come vuoi
- rimuovere l'attributo
style
dal clone (riapparire)
- Modificare il
class
del clone di twitter-share-button
append()
questo clone al tuo dal passaggio 2.
- Utilizzare
$.getScript()
per caricare ed eseguire Javascript di Twitter. Questo convertirà il tuo clonato <a>
in uno con tutto il giusto goop.
Ecco il mio HTML (a 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
Poi, nel tuo .js client-side:
// 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");
ho ottenuto i principali indizi di questa soluzione da qui: http://tumblr.christophercamps.com/post/4072517874/dynamic-tweet-button-text-using-jquery
Sto provando a realizzare fondamentalmente la stessa cosa. Ho provato ad aggiornare dinamicamente l'attributo 'data-url' con:' $ ('. Twitter-share-button'). Attr ("data-url", "http: // mynewlink"); 'ma il javascript di Twitter ha già eseguito e questo non funziona. Aiuto! – tig