Hatena::Grouprikuo

ザオ陸

20091125Wed

Twitterで経過時間表示を時刻表記に変更するBookmarklet(自分用)

自分用で、Firefoxでしか使う気なかったのでXPathで。

javascript:var _doc = document;var node = xpath(_doc, 'descendant::span[contains(concat(" ",@class," ")," timestamp ")]');var r = /^{time:'(.+) (.+) (..) (..):(..):(..) (.+) (.+)'}$/;var p = '$2 $3, $8 $4:$5:$6 UTC+0000';if(node.snapshotLength){	for(var i=0,nl = node.snapshotLength; i < nl; ++i){		var time = node.snapshotItem(i);		var data = time.getAttributeNode('data').textContent;		var t=new Date(data.replace(r,p));		time.textContent = t.toLocaleString();	}}function xpath(context, query){	return _doc.evaluate(		query, context, null,		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null	)}void(0);

中身としてはこんな感じ

var _doc = document;
var node = xpath(_doc, 'descendant::span[contains(concat(" ",@class," ")," timestamp ")]');
var r = /^{time:'(.+) (.+) (..) (..):(..):(..) (.+) (.+)'}$/;
var p = '$2 $3, $8 $4:$5:$6 UTC+0000';

if(node.snapshotLength){
	for(var i=0,nl = node.snapshotLength; i < nl; ++i){
		var time = node.snapshotItem(i);
		var data = time.getAttributeNode('data').textContent;
		var t=new Date(data.replace(r,p));
		time.textContent = t.toLocaleString();
	}
}

function xpath(context, query){
	return _doc.evaluate(
		query, context, null,
		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
	)
}

jQuery使う方式だと、IE6でもいけるかな……思うのでそのうち変更する……予定。

トラックバック - http://rikuo.g.hatena.ne.jp/rikuo/20091125