開発^3

Web開発、宇宙開発、ゲーム開発の3種類についてつらつらと

Colorful Google Calendarを日本語以外に対応

Google Calendarで日本語以外の言語を使用するように設定した場合、Colorful Google Calendarが動かなかったので修正しました。
言語依存の部分は無くしたのでこれでどんな言語でも大丈夫なはず。
English(UK)とMagyar(ハンガリー語らしい)で動作確認。


こんな感じに日曜日と土曜日が着色されます。


Colorful Google Calendarのソース
Colorful Google Calendarスクリプトのインストール(Firefox3 + Greasemonkey用)

クラス名での要素取得

改造中にクラス名から要素を取得する必要があったけど複数クラスを指定している場合や、指定した複数のクラスにマッチする要素を取得するのが結構面倒です。
querySelectors API早く来ないかなぁ・・・


・getElementsByClassNameの場合(Firefox3ならばNative)

var daySelectList = $("dp_0").getElementsByClassName("DP_weekday_selected");
var endSelectList = $("dp_0").getElementsByClassName("DP_weekend_selected");
var daySelect = daySelectList.length == 0 ? 0 : parseInt(daySelectList[0].innerHTML);
var endSelect = endSelectList.length == 0 ? 0 : parseInt(endSelectList[0].innerHTML);
var selectedDate = Math.min(daySelect, endSelect);

・document.evaluateをつかったXPath指定の場合

var xpath = "";
xpath += "descendant::td[";
xpath += "contains(@class,'DP_weekday_selected') or ";
xpath += "contains(@class,'DP_weekend_selected')";
xpath += "][1]/text()";
var selectedDate = document.evaluate(xpath, $("dp_0"), null, XPathResult.NUMBER_TYPE, null ).numberValue

・QuerySelectors APIの場合(Firefox3.1/IE8で実装予定)*1

var selectedDate = parseInt($("dp_0").querySelector(".DP_weekday_selected, .DP_weekend_selected").innerHTML);

*1:3.1は開発者向けに現在beta2が公開中。でもインストールしてないのでこのコードが動くかは未確認