Hatena::Groupos0x

FFFF RSSフィード

0xFFのメモです。

2008 September 18th Thursday

勝手に添削「Twitterの各アイコン横のユーザ名からふぁぼったーに行くGreasemonkey」

20:11 | 勝手に添削「Twitterの各アイコン横のユーザ名からふぁぼったーに行くGreasemonkey」 - FFFF を含むブックマーク はてなブックマーク - 勝手に添削「Twitterの各アイコン横のユーザ名からふぁぼったーに行くGreasemonkey」 - FFFF

はてなダイアリー

AutoPagerize (swdyh)との併用不可

ってのに釣られた。

で、中身をみたら、

document.body.innerHTML=document.body.innerHTML.replace(//,'')

document.body.innerHTML の全書き換えは色々と副作用があるので、オススメできません。

てなわけで、シンプルな$X関数(simple dollar X) - os0x.blog使いつつ、AutoPagerizeが継ぎ足したページにも対応するとこんな感じ。

// ==UserScript==
// @name twitter_to_favotter
// @namespace http://d.hatena.ne.jp/gensyokuneon/
// @description twitter kara favotter ni iku.
// @include http://twitter.com/*
// @require http://gist.github.com/3242.txt
// ==/UserScript==
var FAVOTTER = "http://favotter.matope.com/user.php?user=";
function t2f(doc){
	$X('descendant::div/strong/a',doc).forEach(function(a){
		a.href = FAVOTTER + a.href.replace(/.*\//,'');
	});
}
t2f();
setTimeout(function(){
	window.AutoPagerize && window.AutoPagerize.addFilter(function(docs){
		docs.forEach(t2f);
	});
},0);
$X('id("me_name")').forEach(function(p){
	p.innerHTML = p.innerHTML.replace(/\s*(\w*)\s*/,'<a href="'+FAVOTTER+'$1">$1</a>');
});

一応ファイル http://ss-o.net/userjs/twitter_to_favotter.user.js

@requireの機能を使っているので、このままだとGreasemonkey0.8でしか動きません。

ただ、$Xを定義してあげればOperaでもGreaseKitでもGreasemetalでも動くはずです。

あ、あと、元記事で swdyh.infogami.com/autopagerize にリンク貼られてるけど、infogamiはもう使われてないから不適切だなとか思った。

Twitterのレイアウト変更で早くも動かなくなっていたので一応修正

ヘッダの部分ミスってるよ、とyoupyさんに教えてもらったので、ついでにちゃんと動くように直しました(2009/04/02)

gensyokuneongensyokuneon2008/09/18 20:34わざわざ書き換えまでして下さってありがとうございます。
javascript勉強します。