как изменить url без изменения истории браузера


До сих пор я только знаю, что если я хочу изменить URL без перезагрузки всей страницы, я должен использовать HTML browser history API.

Я использую эту концепцию на своем веб-сайте. Давайте возьмем пример. Пусть предположим, что пользователь находится на этой странице

 https://www.example.com/aboutus

А затем он переходит к списку продуктов, в котором у нас есть фильтры. При нажатии на любой фильтр система генерирует новый url-адрес примерно так

https://www.example.com/products?brands[]=song&brands[]=samsung&condition[]=new

Внутренне это просто вызов

history.pushState({}, 'Title', link.href);

, но, у нее есть одна проблема. Нажатие Кнопка back переходит к предыдущему фильтру. мне не нужна эта функциональность . Я хочу, при нажатии кнопки browser back он должен перейти на страницу, которая находится перед current страницей. В нашем случае предполагается принять к

https://www.example.com/aboutus

Спасибо.

1 32

1 ответ:

Вы ищете replaceState(), он заменяет текущую позицию в истории вместо того, чтобы толкать новую, как pushState() делает

От MDN

history.replaceState() работает точно так же, как history.pushState() за исключением того, что replaceState() изменяет текущую запись истории вместо этого о создании нового.

replaceState() особенно полезно, когда вы хотите обновить объект состояния или URL текущей записи истории в ответ на некоторые действие пользователя.

Помните, некоторые функции недоступны в старых браузерах . Но есть библиотека это может тебе помочь.