2015-09-28 16 views
12

これは何度も尋ねられていますが、回答は私の問題を解決するのに十分ではないことが分かりました。私はページのURL全体を変更したくありません。私はリフレッシュせずにボタンのクリックにパラメータ&item=brandを追加したいと思います。URLをリフレッシュせずにパラメータを追加する

document.location.search += '&item=brand';を使用するとページがリフレッシュされます。

リフレッシュなしで追加しますが、パラメータの使用法/効果を排除するハッシュ#を使用します。追加した後でハッシュを削除しようとしましたが、うまくいかなかった。


This answerと他の多くは、具体的history.pushState方法、HTML5履歴APIの使用を提案し、古いブラウザ用に再ロードからページを防ぐために、フラグメント識別子を設定することです。しかしどうですか?


と仮定すると、URLは次のとおりです。ページを更新せずにhttp://example.com/search.php?lang=en&item=brandhttp://example.com/search.php?lang=en

は、どのように私は、出力は次のようになりますので、HTML5 pushState方法またはフラグメント識別子を使用して&item=brandを追加することができますか?


私は誰かが、既存/現在のURLにパラメータを追加するHTML5 pushStateを使用する方法についていくつかの光を投げることができると思います。あるいは、同じ目的のためにフラグメント識別子を設定する方法。良いチュートリアル、デモ、少しの説明付きのコードを書くことは素晴らしいことです。

Demoこれまで行ってきたことのうち、あなたの答えは非常に高く評価されます。

答えて

30

あなたはすなわち、pushStateまたはreplaceState方法を使用することができます。:

window.history.pushState("object or string", "Title", "new url"); 

OR

window.history.replaceState(null, null, "/another-new-url"); 
+1

をありがとうございました!しかし、意外にも、このパラメータはシステムには適用されませんでした。ただし、手動でURLに追加すると有効になります。私はこれを受け入れる答えとして考えていますが、私の主な問題は解決しますが、なぜ 'history.pushState'を使って追加したときにパラメータがシステムに適用されないのかについての提案があれば教えてください:)もう一度ありがとうございます。 –

+0

私は自分の答えを更新しました。 –

+1

私はpushStateオプションを使用しました。感謝 –