日記
両用インターフェースと通信の表示 (14:22)Edit

MM/blogmapで、画像等の表示・非表示を切り替える機能を、サイドバーに追加したんだけど、そのインターフェースとして、

  • Ajax環境の場合
    • フォームのチェックボックスのオン/オフで動的に表示・非表示が変わる
    • さらに設定の変更が非同期で保存される(といっても現状はCookieだけど、わざわざサーバーサイドを介して保存している)
  • 非Ajax環境の場合
    • フォームのチェックボックスで設定を変更し、[保存]ボタンをクリックして設定を保存する。
    • ページをロードする段階でのみ、現在の表示・非表示設定が反映される

といった感じにしてみた。多分こういうやり方がAjaxと非Ajaxで両用のインターフェースを使う場合の基本形になるんじゃなかろうか。機能を呼び出すインターフェースを従来のHTMLフォームと互換にしておいて、Ajax環境ではJavaScriptがいろいろ処理を行い、それ以外の場合はHTMLフォームからPOSTしてサーバーサイドで処理を行う感じ。

あと、裏で何を通信しているのがわからなくて気色悪い説がやはり強いらしいんで、Ajaxで通信をするときには、ブラウザのステータスバーに「Ajax connect to [URL]」みたいな通知を表示するようにしてみた。通知を表示する領域をドキュメント内に用意できる場合はそこに表示し、そうじゃない場合はこういう風にステータスバーに表示するのが手軽かなー。ただ、なぜかFireFoxだとステータスバーに何も表示されない。

本格的にライブラリを構築するんだったら、詳細通知モードをユーザーがオンにすると、別ウィンドウにAjaxの通信状態に関する詳細が表示されるようになったりするといいかもしれない。「if (!msgwin) {msgwin = window.open();} msgwin.document.write(msg);」ってする感じね。

ちなみに、現在blogmapとかMMでは更新日時を見てNot Modifiedとか返しているんで、スーパーリロードしないとうまく設定が反映されないかもしれません。そのうちその辺の整合性も調整します。

Published At2005-03-11 00:00Updated At2005-03-11 00:00