JavaScriptでdocument.location.hash=''としても「#」だけ残ってしまいます(再度document.location.hashを参照すると「#」が入っている)。この「#」を消す方法はあるのでしょうか?


http://~/index.htm#hoge
の状態からページ移動(再読込)させずに、JavaScriptで
http://~/index.htm
にしたいのです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/01/26 22:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:horonict No.1

回答回数257ベストアンサー獲得回数51

ポイント60pt

"document.location.hash"を使う理由が分からないのですが、下記のようにしてはどうでしょう。

url = document.location.href.split("#");
document.write(url[0]);
id:Hidehisa

ブラウザのlocationバーに表示されるURLを変更したいので、document.writeではちょっと……

2010/01/19 23:11:07
  • id:Hidehisa
    ちなみに、document.location.hash="\x08"とかしてもダメでした(当然ですが)。
  • id:horonict
    >ブラウザのlocationバーに表示されるURLを変更したいので
    ブラウザ依存させないスクリプトを書くには、location.hrefを使うしかないのでは・・・
  • id:mamy1326
    ページ遷移無しで、ページ内リンクやその他の用途で使うhashを削除し、なおかつURLから#を取り除きたい、ということと解釈します。

    objectかと思って

    var ret = delete document.location.hash;

    とやったら「false」と返ってきました。
    DontDelete属性なのか、そもそもブラウザの挙動として一度hashを指定したら#は消せないのか、別名で#を保持しているのかはわからず・・・。
    pathname, replaceを実行したらページ遷移してしまいますし・・・。
    hashには何を入れても#は付きますね。
  • id:Hidehisa
    mamy1326さん、ありがとうございます。そういうことなんです。

    deleteも私も試してみました……。

    どのブラウザでも同じ挙動なので、ECMAScriptとかDOMの仕様を調べてみれば何か出てくるのかな……。
  • id:Hidehisa
    あとは、オブジェクト自体の動作をいじったり、偽historyとしてハッシュなし履歴をfakeで作って自動バックして履歴をいじって、か……。
  • id:Hidehisa
    historyオブジェクトって勝手に項目追加とかできないのね……。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません