I get it. Here's how to do it.
General idea:
- In your HTML, set the
class
your <a>
for the twitter .twitter-share-button
as something other than .twitter-share-button
. Also give <a>
a style="display:none;"
. - In your HTML, where you want the twitter sharing button to appear, create a
<div>
(or <span>
) with a unique id
. - In your jQuery, when you want to set the data for the twitter share button, you will:
- 'clone ()
the hidden, mis-named,
`tag from step # 1 - In this clone, set
data-url
attributes, etc., as you would like - Remove
style
attribute from clone (show it) - Change clone
class
to twitter-share-button
append()
this clone to your <div>
from step 2.- Use
$.getScript()
to download and run Twitter Javascript. This will convert your cloned <a>
to <iframe>
with all the correct errors.
Here is my HTML (in 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
Then on the client side .js:
// 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");
I got the basic tips for this solution from here: http://tumblr.christophercamps.com/post/4072517874/dynamic-tweet-button-text-using-jquery
source share