カテゴリー
Develop

ハッシュコントロール

からハッシュコントロールをした際に、historyをしたいなという状況だったのだけど、JSのhistoryってread onlyの属性なのでクリアも置換もできず、どーしたものかと悩んでいました。
で、今朝方ウンウンうなっていたら
隣の席のワタル氏が解決してくれました。
こんな感じ。

if(document.getElementById) {
location.replace(“#” + _s);
}else if(document.all) {
location.hash = _s;
}

いやー、replaceって移動、再読み込みってだったのですが、、safari系だとhashの場合reload掛けないで、historyも残さないという仕様なのですが・・・。
ちなみにlocation.hashはsafariの場合”#”を付けてあげないとキチンとxxx.#ahoってならないですよ。これをreplaceで一気にfirefoxもあわせて処理できるのはウマー。な感じ。まぁバギーなやり方ではあるのですが・・。(ちなみにIEはそもそもハッシュ移動履歴をヒストリとして認識させていないらしい)
これでまた一つ前進。
サンキウベリマッチ。

「ハッシュコントロール」への2件の返信

問題解決できたようでなによりですー!
でも、この判定だと、IE(5以上)でも location.replace で処理しませんか?!(document.getElementById で true になるので)

おぉぅ?w
確認しまっす。
一応動作的には問題ないのですが、replaceしてるのかなぁ・・。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です