javascript 設定 URLからハッシュを削除する



ハッシュ を 消す javascript (4)

更新された回答

これを達成する最善の方法は、 ホメロバルボーサの答えに従うことです。

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);
}

...しかし、それはちょうどそこに到着した後に些細な失礼のように見えるあなたのためのページをリフレッシュする。 それは最高の選択肢であるようだ。

私は、私のプロジェクトの1つでページ分割をして、ユーザーに現在のページをブックマークできるようにするために、ページ番号をハッシュで追加しています。

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

それはうまく動作し、 hyperlink上のthatsは、ページ番号が1のときを除いて、私は/products#p=1であることをURLしたくない、私はそれが/productsなりたい

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

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

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

だから私の大きな疑問は依然として疑問が残っています:URLから、そしておそらく宇宙からハッシュを蹴るには? (最初のページのみ!)


var urlWithoutHash = document.location.href.replace(location.hash , "" );

完全に私のために働いた

$(window).on('hashchange', function(e){
  window.history.pushState("", document.title, window.location.pathname);  
 // do something...
});

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;
    }
}




fragment-identifier