2006-11-27

OSX Widget プログラミング: prototype.jsで「京都の天気」

前回までで普通のWebのように画面表示、制御ができることがわかりました。ここまで分かったんだから、なにかアプリをつくろうということで「京都の天気」を作ってみました。

もともと天気予報のWidgetは付属してるんで全然いらないんだけど、まあ学習の一環です。

ライブドアが提供してる天気データXMLをAjaxで定期的に読み込んで、画面更新する方式です。ajax周りのデバッグでハマりがあったんですが、それさえ解決したらいつものやり方で済むのでサクッできました。

ソースツリーはまとめてココに入れています。KyotoWeather.zip

以下ハイライトで解説します。

prototype.js で Ajax + 定期更新

メインHTML上でprototype.js の読み込み(リンク)をします。今回使ったのは prototype.js 1.5.0_rc0 です。

weather.html

prototype.js の後に今回のロジックのための JavaScript コードを格納した weather.js をリンクします。 そこで window.onload 時にデータ取得+定期実行の登録を行います。

ajaxの処理には prototype.js の Ajax.Updater クラスを、定期実行の処理には同じく prototype.js の PeriodicalExecuter を利用します。

weather.js

開発上のハマり: Consoleが欲しい!

実は今回、かなーりはまりました。しかも原因は JavaScript の文法エラー。

普段の Firefox の Firebug で作ってたので、Dashboard Widget のJavaScript Console やステップ実行がない環境があまりに不便だったのです。

たとえば以下のようなコードを書いてたんですが、なんだかこのあたりでいつも動かない。どうもなんかの例外が起きてそうなんだけど、さっぱり分からないわけです。

この問題原因は、最後の showResponse のあとにある","でした。これが余計で文法エラーとなっていたのです。いいじゃねえかよ、ああ、Ruby なら許してくれるのに...というかいろんなスクリプト触りすぎてもうわけがわからん。

こりゃやっとれん!というわけで、いつものブラウザで開発することにしたんですが、今度は Ajax(XMLHttpRequest) のクロスドメイン制限のために、ライブドアにアクセスできません。仕方なく XML をローカルに落としてきて、開発中はURLをローカルのものにして開発していました。

Dashboard の開発環境はまだまだ不便です。Web側の開発が Firefox の WebDeveloper Plugins や Firebug などで格段に便利であるため余計にそう思うのでしょう。

ブラウザでこのWidgetが動くようになれば完璧なんだけど。そりゃ HTTP で取ってきた HTML が勝手に XMLHttpRequest を変なところにできちゃうとヤバいのはわかるんだけど、ローカルファイルならOKとかできないもんかね。アクセス時にセキュリティダイアログ出すとかでもいいからさ。

あーそれかせめて Dashboard で JavaScript コンソールは出せないもんかいな。にんともかんとも。

2 Trackbacks

200 celebrex drug mg

CELEBREX 100mg-10.99/30Tab SAVE 90%

From : 200 celebrex drug mg @ 2008-03-30 01:41:58

levaquin dosage adult

Levaquin (Levofloxacin) 30 pills for 41

From : Levaquin dosage adult @ 2008-04-16 01:56:42

Track from Your Website

http://coji.s9.xrea.com/trackback/tb.php?id=16

Comment

No Comments

Post Your Comment


*は入力必須です。E-Mailは公開されません。