web-dev-qa-db-ja.com

URLからハッシュを削除

私は私のプロジェクトのページネーションをajax化しており、ユーザーが現在のページをブックマークできるようにしたいので、ハッシュを介してページ番号を追加しています:

onclick="callPage(2); window.location.hash='p=2'; return false;"

hyperlinkのthatsは問題なく動作します。ただし、ページ番号が1の場合は、URL/products#p=1にしたくないので、/productsにしたいだけです。

私はこれらのバリエーションを試しました:

  1. window.location.hash=''は機能しますが、URLは/products#のようになりました。
  2. window.location.hashをまったく使用していませんが、ユーザーが3ページ目などから1ページ目に戻ったとき、彼は1ページ目にありますが、ハッシュをいじっていないので、urlはまだ/products#p=3です。
  3. これをGoogleで検索すると、数分(約15)の愚かなフォーラムに行き、そこで質問が正しく尋ねられましたが、スレッド作成者が<a href="#">のようなhrefにハッシュを持っていて、javascript:void(0)代わりに。 (彼らはAjaxのことを聞いたことがなかったのですか?)

だから最終的に、私はこのスレッドを作ることにしました、私はここでいくつかの同様のスレッドを見つけましたが、すべての答えは私の2番目のポイントに非常に似ています。

したがって、私の大きな疑問はまだ疑問のままです。ハッシュをURLから、場合によっては宇宙から追い出す方法は? (最初のページのみ!)

50
iamserious

更新された回答

これを達成する最良の方法は、 Homero Barbosa以下の回答 に従うことです。

history.pushState("", document.title, window.location.pathname);

...または、検索パラメータを維持する場合:

history.pushState("", document.title, window.location.pathname + window.location.search);

元の答え、これを使用しないで、badwrongfun

var loc = window.location.href,
    index = loc.indexOf('#');

if (index > 0) {
  window.location = loc.substring(0, index);
}

...しかし、それはあなたのためにページを更新します。ニヤリとそれは最良の選択肢のようです。

53
wombleton
history.pushState("", document.title, window.location.pathname);
92
Homero Barbosa
var urlWithoutHash = document.location.href.replace(location.hash , "" );
5
Devang Bhagdev

私のために完璧に働いた

$(window).on('hashchange', function(e){
  window.history.pushState("", document.title, window.location.pathname);  
 // do something...
});
4
Ronak Bokaria
function removeHash () { 
    var scrollV, scrollH, loc = window.location;
    if ("pushState" in history)
        history.pushState("", document.title, loc.pathname + loc.search);
    else {
        // Prevent scrolling by storing the page's current scroll offset
        scrollV = document.body.scrollTop;
        scrollH = document.body.scrollLeft;

        loc.hash = "";

        // Restore the scroll offset, should be flicker free
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}
3
Mudassar ali