ロケーションバーのアニメーション

id:amachang さんの以下のエントリ

ロケーションバーアニメーション - IT戦記


window.location.hash を使った面白いテクニックですね。
でも、Firefox で見ると window.history に無数の履歴が作られてしまいますね。w
IE で見ると今度はカチカチカチとページが変わる時の音が気になりますね。w
Firefox とは逆に IE 6/7 は hash を変えてもページの履歴は作られません。


このページの履歴に対する双方のブラウザの振る舞いの違いは、ページの移動のない Ajax アプリケーションで、ブラウザの戻るボタンやブックマークの機能を使えるようにする為の、Ajax デザインパターンの Unique URLs パターンの実現を難しくしています。


ようは hash に値をセットすると Firefox の場合、戻るボタンでセットする前のアドレスに戻せるけど、IE の場合は戻せない。
そのため、非表示の IFrame を仕込んでおいて、この IFrame の src に適当な URL をセットすることで、IE に無理やりアドレスバーのアドレスを記憶させるというテクニックを使う。
IE は IFrame の src を変更すると、その時点のアドレスバーの値を記憶するんですね。
でもこんなテクニックを使うと Unique URLs パターンを実現する為の実装はとても複雑になります。


hash プロパティについてもブラウザ間の振る舞いを合わせて欲しいものです。
そうすれば、よりAjax アプリケーションの開発が楽になり、ユーザーの使い勝手もよくすることができる。


Ajaxデザインパターン ―ユーザビリティと開発効率の向上のために (THEORY/IN/PRACTICE)
http://ajaxpatterns.org/Unique_URLs