Как поменять url в адресной строке браузера с помощью js?

Допустим клиент находится на странице интернет-магазина

https://site.ru/product-category/kriuchki/?search=&price_min=0&price_max=1051&page=2

Необходимо, чтобы когда он выбирал другой тип сортировки товаров на странице, его кидало на первую страницу каталога. Как я могу убрать page=2 и перезагрузить страницу?


Ответы (2 шт):

Автор решения: gil9red

Убрать можно через обработку адреса как строки (но рекомендую посмотреть в сторону парсеров), пример:

let url = 'https://site.ru/product-category/kriuchki/?search=&price_min=0&price_max=1051&page=2';
console.log(url.replace(/&page=\d+/, ''));

Страница будет перезагружена при изменении window.location.href

Полный пример:

let url = window.location.href;
window.location.href = url.replace(/&page=\d+/, '');
→ Ссылка
Автор решения: zhurof

Если фильтр из себя представляет простую форму с GET-запросом, то можно внедрить в него поле со значением текущей страницы. При изменении параметров фильтра просто устанавливать значение этого поля как 1

document.querySelectorAll('.filter__field').forEach((input)=>{
  input.addEventListener('input',(e)=>{
    input.form.elements.page.value = 1;
  })
})
<form action="" class="filter">
    <input type="number" name="price_min" class="filter__field" placeholder="Цена от" min="0" max="100">
    <input type="number" name="price_max" class="filter__field" placeholder="Цена до" min="1" max="100">
    <input type="hidden" name="page" value="2">
    <button>Применить фильтр</button>
</form>

→ Ссылка