Добавление параметра в URL без обновления

Я знаю, что это было предложено много раз, но ответы не были достаточно информативными, чтобы решить мою проблему. Я не хочу изменять весь URL-адрес страницы. Я хочу добавить параметр &item=brand on нажмите кнопку без обновления.

используя document.location.search += '&item=brand'; делает обновления страницы.

используя window.location.hash = "&item=brand"; добавить без обновления, но с хэш -# что исключает использование / влияние параметра. Я попытался удалить хэш после добавления, но этого не произошло работа.


ответ и многие другие предлагают использовать HTML5 History API, в частности history.pushState метод, а для старых браузеров-установить идентификатор фрагмента, чтобы предотвратить перезагрузку страницы. Но как?


предполагая, что URL-адрес:http://example.com/search.php?lang=en

как я могу добавить &item=brand используя метод pushState HTML5 или идентификатор фрагмента, чтобы вывод был таким:http://example.com/search.php?lang=en&item=brand без обновления страницы?


I надеюсь, кто-то может пролить свет на то, как использовать HTML5 pushState для добавления параметра к существующему/текущему URL-адресу. Или же, как установить идентификатор фрагмента для той же цели. Хороший учебник, демо или кусок кода с небольшим объяснением было бы здорово.

демо что я сделал до сих пор. Ваши ответы будут очень признательны.

2 ответов


можно использовать pushState или replaceState методы, т. е.:

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

или

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

Если кто-то хочет добавить параметр в более сложный url (я имею в виду,https://stackoverflow.com/questions/edit?newParameter=1), следующий код работал для меня:

var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?newParameter=1';
window.history.pushState({ path: newurl }, '', newurl);

надеюсь, что это помогает!