location.hashの書き換えでリロードが発生

Yahoo!Maps のように、FlashとJavascriptを連携させて、URLのhashを書き換えていこうと思ったら、ずっこけた。悪名高きOperaで location.hash を書き換えると、勝手に画面がリロードされてしまう。なぜ。

いろいろ追っていった結果、現在のhash値と代入する値が同一の場合、リロードになるっぽい。どんな仕様ですか。しょうがないので、if文で分岐するがよろし。

function setHash(_value) {
    if(location.hash != "#" + _value) {
        location.hash = _value;
    }
}

「これはバグだ!」と思ったら、なんか Safari でも同じような動きになる。スタンダードって何だろうとか考えさせる、罪なブラウザたち。やめて欲しい。

話がそれます。

Flash側から location.hash を変更するJavaScript関数をコールして、URLをダイナミックに書き換えることで、フルフラッシュサイトで、ブラウザの進む戻るボタンが使えるようになる可能性あり。サーバー絡めず、Flash単体で permalink を実現できると良い感じかと。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/303
JavaScriptの条件分岐 from ネットビジネス用CGI Perl HTML Javascriptの情報サイト at 2006年3月25日 00:17

  私たちの生活の中でも、さまざまな選択があるように、JavaScriptのプログラムにも、条件によって処理を変化させる「条件分岐」というものがあります。...

 [続きを読む]