これで我々の拡張機能ができましたが、このままではまだ動きません。動くようにするには、Tinderbox の状態に合わせて拡張機能のステータスを変更する JavaScript のコードが必要です。まず最初に、Tinderbox サーバから現在の Tinderbox の状態を取得する関数を書きます。
var gXMLHttpRequest;
function loadTinderboxStatus() {
gXMLHttpRequest = new XMLHttpRequest();
gXMLHttpRequest.onload = updateTinderboxStatus;
gXMLHttpRequest.open("GET", "https://tinderbox.mozilla.org/SeaMonkey/panel.html");
gXMLHttpRequest.send(null);
}
XMLHttpRequest は HTTP を介してドキュメントを取得するための Mozilla のインターフェイスです。これは XML コンテンツを取得し、解析して DOM に変換するように設計されています。XML 以外のコンテンツも (解析はしませんが) ちゃんと取得できます。今回は、現在の Tinderbox の状態の概要を含む HTML ファイルを取得するのに使います。その HTML ファイルは Tinderbox サーバがビルドを終える度に更新されています。そのファイルには、アクティブな Tinderbox クライアントのリストと、最新のビルドの結果が示されています。
今回のようなシンプルな場合なら、XMLHttpRequest を使うのは簡単です。new
で XMLHttpRequest のインスタンスを生成し、インスタンスの onload
プロパティに updateTinderboxStatus()
をセット (この関数はドキュメントの読み込みが終わった時に実行したい関数です) し、インスタンスの open
メソッドを、発行したい HTTP リクエストのタイプと、取得するドキュメントの URL を引数に指定して呼び、最後に実際にリクエストを送る send
メソッドを呼び出します。【訳注: updateTinderboxStatus() 関数は次の Step で作成します】
XMLHttpRequest は与えられた URL にあるドキュメントを取得し、取得し終わると updateTinderboxStatus()
を呼びます。
XMLHttpRequest のインスタンスをグローバル変数として定義したのに注意してください。これは updateTinderboxStatus()
がこの関数と同様に このインスタンスを参照する必要があるけれど、この関数が直接に updateTinderboxStatus()
を呼ぶのではないので、この関数から updateTinderboxStatus()
へ XMLHttpRequest のインスタンスを渡すことができないためです。