風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Star Counter:ブックマークレットとしても動作するようにしてみた(ver.0.02〜)

Firefox/Google Chrome/Safari/Operaで動作するみたい*1

ユーザサイドスクリプト(Greasemonkey他):Star Counterのインストール

ですが、ブックマークレットとしても動作するようにしてみました。
これでマルチブラウザ対応&フレームのページとかでもスターが付けられる、かも。
いろいろ付け足したのでGreasemonkeyとしての動作がおかしくなっている可能性も…その場合はバージョンダウン(ver.0.01c)して下さい。

'add':スターを付ける(Twitterには投稿しない)

javascript:(function(){var%20mode='add',opt={totwitter:0,tell:1},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();

'add':スターを付ける(Twitterにも投稿する:★のオススメでも設定して下さい)

javascript:(function(){var%20mode='add',opt={totwitter:1,tell:1},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();
1

'delete':スターを削除

javascript:(function(){var%20mode='delete',opt={tell:1},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();

'show':スターの確認ページを開く

javascript:(function(){var%20mode='show',opt={},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();

'count':スター数をプロンプトで表示

javascript:(function(){var%20mode='count',opt={},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();

プロンプト表示する代わり、引数のoptをopt={callback:function(counter_infos,flag_error){...}}のようにすると、counter_infosに各種カウント情報(総数・色別)が入ってくるので任意に加工することもできます。

'info':スターの詳細な情報をプロンプトで表示

javascript:(function(){var%20mode='info',opt={},w=window,d=document,s,f=function(){return w.HS_UserExtension&&w.HS_UserExtension.StarControl},c=function(){if(!f()){setTimeout(c,100);return}w.HS_UserExtension.StarControl(mode,opt)};if(f()){c()}else{s=d.createElement('script');s.src='http://furyu-tei.sakura.ne.jp/script/star_counter.user.js?ver='+(new Date).getTime();d.body.appendChild(s);c()}})();

プロンプト表示する代わり、引数のoptをopt={callback:function(star_infos,flag_error){...}}のようにすると、star_infosに詳細なスターの情報(http://s.hatena.ne.jp/entry.jsonの戻り値)がstar_infosに入ってくるので任意に加工することもできます。

*1:IE7とかでも動くことは動きますが、アイコン表示がおかしくなります(position:fixedに対応していないため)。Operaもちょっと変かも…CSSの書き方が変なのかな?