#_だわん このページをアンテナに追加 RSSフィード

2006-03-26

yakalikeタイムスタンプ日本時間にするgreasemonkeyスクリプトを書いてみた yakalikeのタイムスタンプを日本時間にするgreasemonkeyスクリプトを書いてみた - #_だわん を含むブックマーク

ちょっと前にyakalikeで誰か*1が「日本時間だったら良いのにな」なんてことを言っていたので作ってみた。

http://aaa-www.net/~typer/YakalikeTZ+9.user.js

最初は簡単に考えていたけれど、作り始めて実は一工夫必要なことがわかった。考えてみれば当たり前だが、greasemonkeyスクリプトはページ読み込時に一度だけ実行される。そのためajaxで変更された内容をいじるには何らかの方法で後から関数なりメソッドなりを呼び出す必要がある。しかし、変更時だけ効率的に呼び出す方法がわからず、結局定期的に呼び出している。なにぶんにも初めて書いたので、このことに限らずリファクタしていただけるとありがたいです。

一応ソースも。

// refer to:
//   http://diveintogreasemonkey.org/patterns/match-attribute.html
//   http://www.tohoho-web.com/js/dom.htm
//   http://hamachiya.com/junk/htbClassic.user.js
//   http://www.mozilla.org/docs/dom/domref/dom_window_ref114.html#1021410
// ==UserScript==
// @name	YakalikeTZ+9
// @namespace	http://d.hatena.ne.jp/TransFreeBSD/
// @description	Convert to japanese time zone in yakalike
// @include	http://chat1.yakalike.com/jchat/*
// ==/UserScript==
(function() {
	function ConvertTZ() {
		var postdate=document.evaluate(
			"//span[@class='message_postdate']",
			document.getElementById('messages_div'),
			null,
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
			null);
		for(var i=0; i<postdate.snapshotLength; i++) {
			var item=postdate.snapshotItem(i);
			if (item.innerHTML.match(/^\[(\d\d)(:\d\d:\d\d) -0500\] $/)) {
				item.innerHTML
					= '['
					+ ('0'+(RegExp.$1-0+14)%24).slice(-2)
					+ RegExp.$2 + ' +0900] ';
			}
			item.setAttribute("class","message_postdate message_postdateJa");
		}
	}

//	var style = document.createElement('style');
//	style.type = 'text/css';
//	style.innerHTML = '.message_postdateJa{}';
//	var head = document.getElementsByTagName('head')[0];
//	head.appendChild(style);
	window.setInterval(ConvertTZ, 3900);
})();

*1:strangefruitsさんだった気もしますが、ちゃんと覚えてません。ごめんなさいです。あっていて良かった良かった

strangefruitsstrangefruits2006/03/26 22:33「日本時間で表示されたらいいのに」と言ったの、私です。
早速入れさせて頂きました!
ありがとうございます!

トラックバック - http://dogfood.g.hatena.ne.jp/TransFreeBSD/20060326