Ajax での戻るボタンの実現
Ajaxで一般的な問題の一つに, 戻るボタン問題がある. ページの秒が状態が変化しても, URL的にはページが遷移しないため, 戻るボタンが効かない, という問題.
検索するといくつもやり方がでてくるが, 独立してこの問題だけに対処したパッケージRSHが使いやすそうだったので, これで実装中のメモツールに戻るボタンを実装してみた.
要するに状態キューを管理してくれるライブラリで, 基本的な使い方としては,
- 画面遷移を行うところで, dhtmlHistory.add() メソッドでページの状態を記録
dhtmlHistory(Location, Data);
- 戻るボタンのハンドラで, 記録しておいたページ状態から画面を再構築
dhtmlHistory.addListener(function(location, data){ display(location, data); });
といった感じ.
locationには, その画面状態を示すなんらかのIDを. dataには, 画面を再構成するための情報をおさめたオブジェクトを与えるらしい.
別に, 画面の状態をだれかが覚えておいてくれる訳ではないので, 例えば編集中のテキストエリアなんかを覚えておきたければ, それも含めた形で状態を保存しておき, ハンドラではその内容を書き戻してやらなければならない.
私のアプリは, 今のところ状態がとても単純なアプリケーションなのでわりに簡単に実現できたが, ちゃんとした複雑なアプリケーションだと, このライブラリを使っても相当大変そうだ.
注意点:
- prototype.js と組み合わせて使う場合には, バージョン1.6でないと動かない.
- UsageExamples のページがからっぽで, 使い方が分からない(T_T).