2009年4月14日火曜日

ふぁぼったのステータスページにふぁぼりすたー(?)を追加するuserscript書いた。

このエントリーをはてなブックマークに追加


Twitterでたまにふぁぼったのステータス画面へのリンクが張られるのですが、そこからすぐふぁぼりたい時があるじゃないですか。
ユーザページとトップページにはすぐにふぁぼるためのふぁぼりすたー(?)があるのですが、ステータス画面ではない。
なので、それを表示するuserscriptを書いて、codereposへうpしました。
http://coderepos.org/share/browser/lang/javascript/userscripts/favotter_star.user.js

追記
CodeReposだとインストールしにくいんだよ、F*ck!という天の声が聞こえたので、Userscripts.orgにもアップしておきました。
http://userscripts.org/scripts/show/46655



Firefox3とOpera10で確認済。変なコードは書いていないので、IEとかいう駄目ブラウザ以外では大抵動くと思う。
ちなみに、ふぁぼりすたー(?)をクリックするとBasic認証ダイアログが出ますので、自分のIDとパスワードを入力してください。
これはTwitterの仕様なので仕方が無いですね。
お前クローキングしてねーだろーなーと疑われる方は下のソースコードをじっくり眺めてください。

// ==UserScript==
// @name favotter star
// @namespace http://looxu.blogspot.com/
// @description fav on favotter status page
// @include http://favotter.matope.com/status*
// @author Arc Cosine
// @version 1.0
// ==/UserScript==
// License : Public Domain
(function(){
var d = document;
var fav = {
_url_full : 'url("http://favotter.matope.com/icon_star_full.gif") no-repeat',
_url_empty : 'url("http://favotter.matope.com/icon_star_empty.gif") no-repeat',
_is_favoted : false,

_pushFav : function(){
var id=location.search.match(/\d+/);
var api = !fav._is_favoted ? 'create' : 'destroy';
var iframe = d.createElement('iframe');
iframe.name = 'fav_' + id;
fav._setCSS( iframe, { 'display' : 'none' });
d.body.appendChild(iframe);
var url = "http://twitter.com/favourings/" + api + "/" + id + ".xml";
var form = d.createElement('form');
form.action = url;
form.target = 'fav_' + id;
form.method = 'POST';
d.body.appendChild(form);
iframe.contentDocument.onload = fav._changeStar();
form.submit();
},
_changeStar : function(){
var star = d.getElementById('userjs_star');
if( !fav._is_favoted ){
fav._setCSS( star, { 'background' : fav._url_full } );
fav._is_favoted = true;
}else{
fav._setCSS( star, { 'background' : fav._url_empty} );
fav._is_favoted = false;
}
},
_setCSS : function(node, options){
for( var option in options ){
var st_op = option.replace( /-([a-zA-Z])/, function(m){ return m[1].toUpperCase(); });
node.style[st_op] = options[option];
}
},
init : function(){
fav._is_favoted =false;
var star = d.createElement('span');
star.id = 'userjs_star';
fav._setCSS( star, {
'background': fav._url_empty,
'width' : '16px',
'height' : '16px',
'text-align' : 'right',
'padding-left' : '20px',
'padding-bottom' : '20px'
});
star.addEventListener( 'click', fav._pushFav, false );
//insert
var target = d.getElementsByClassName('info')[0];
target.insertBefore( star, target.firstChild );
}
};
fav.init();
})();


ライセンスはpublic domainです。

0 件のコメント :

コメントを投稿