dT*blog

design and programming

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 を実現できると良い感じかと。

Posted by dT by 21:28

トラックバック

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

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

 [続きを読む]

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30