61

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

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

それhyperlinkは問題なく動作し、ページ番号が1の場合を除いて、私はなりたくURLない/products#p=1、私はそれが欲しいだけです/products

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

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

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

だから私の大きな疑問はまだ残っています.URLからハッシュを追い出し、おそらく宇宙から追い出すにはどうすればよいですか? (最初のページのみ!)

4

5 に答える 5

94
history.pushState("", document.title, window.location.pathname);
于 2012-03-10T02:10:39.017 に答える
68

更新された回答:

これを達成する最善の方法は、以下の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);
}

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

于 2010-12-22T11:35:16.407 に答える