SPA(シングルページアプリケーション)なんかだと、hash bang(#!)を使ってページを変えるパターンがある。
そのとき、TwitterのTweetボタンのURLにhash bangを含めたい。
つまり、動的に変えたい。
それが結構たいへんだった。
答えは以下のURLのとおり。
コードの説明
htmlに次のように、テンプレートと空の領域を用意しておく。
テンプレートのclassはtwitter-share-button
以外にし、display:none;
で非表示にする。
<a href="https://twitter.com/share" class="twitter-share-button-template" data-url="http://dummy.com" data-hashtags="hashtag" style="display:none;">Tweet</a>
<div id="tweet-area"></div>
- 前につくったTweetボタンを削除
- テンプレートをclone
- cloneしたものから
display:none;
を外して表示 -
data-url
を新しいURLにする(この例では今のURLにしている) -
twitter-share-button
にする - 空の領域に作ったTweetボタンを配置
- scriptを読み込み、Tweetボタンを設定する
function setTweet(){
// remove any previous clone
$('#tweet-area').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', location.href);
clone.attr('class', 'twitter-share-button');
// copy cloned button into div that we can clear later
$('#tweet-area').append(clone);
// reload twitter scripts to force them to run, converting a to iframe
$.getScript('http://platform.twitter.com/widgets.js');
}
原理
うーん、よくわからなかった。
上記サイトで。。。