ツイートボタンをリロードする(ページが読み込まれた後に動的に再作成する)には?
ツイートボタンはこのページで自由にカスタマイズして作成できる。
Twitter Buttons | About
作成したコードをページに埋め込むと、そのページをブラウザでロードしたときに表示されるのは知っての通り。
基本的にツイートするアドレスや内容などはページをロードする時に決まっている必要があるが、ページをロードした後でそれらを変更するにはどうしたらいいだろうか?
ブログやホームページなどの静的なサイトで問題になることはあまりないだろうが、AngularJSなどで構築したシングルページアプリケーションでは大いに問題になり得る。
まず、ツイートボタンを表示するホルダーをこのように作成する。
このscriptタグは window.twttr を生成する。このオブジェクトは様々なツイートボタンを作ることができる。
Scripting: Factory Functions | Twitter Developers
なので、このtwttrオブジェクトを使ってツイートボタンホルダーの場所にツイートボタンを作る(リロードする)には、例えばこのようなコードになるだろう。
Twitter Buttons | About
作成したコードをページに埋め込むと、そのページをブラウザでロードしたときに表示されるのは知っての通り。
基本的にツイートするアドレスや内容などはページをロードする時に決まっている必要があるが、ページをロードした後でそれらを変更するにはどうしたらいいだろうか?
ブログやホームページなどの静的なサイトで問題になることはあまりないだろうが、AngularJSなどで構築したシングルページアプリケーションでは大いに問題になり得る。
まず、ツイートボタンを表示するホルダーをこのように作成する。
<!-- ツイートボタンホルダー --> <div id="tweetButtonHolder"> </div> <!-- ツイートボタン作成サイト https://about.twitter.com/resources/buttons#tweet でコピーしたscriptタグ --> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
このscriptタグは window.twttr を生成する。このオブジェクトは様々なツイートボタンを作ることができる。
Scripting: Factory Functions | Twitter Developers
なので、このtwttrオブジェクトを使ってツイートボタンホルダーの場所にツイートボタンを作る(リロードする)には、例えばこのようなコードになるだろう。
function reloadTweetButton(url, text) { //ツイートボタンを消す(jQuery使用) $('#tweetButtonHolder').empty(); //ツイートボタンを再作成 twttr.widgets.createShareButton( url, //ツイートしたいURL document.getElementById('tweetButtonHolder'), //ツイートボタンを挿入する場所 { lang: 'ja', //言語。jaだとボタンに「ツイート」と表示される text: text //ツイートしたいテキスト }).then(function (el) { console.log("ツイートボタン作成完了"); }); }
コメント
コメントを投稿