Обновить параметр URL (без refre sh) - PullRequest
1 голос
/ 17 апреля 2020

Я знаю, что это очень задокументированный предмет, но после многих часов исследований я застрял. Я делаю тест, и когда выбор сделан, я хотел бы обновить соответствующий параметр в URL.

https://deusbot-trading.com/quiz/age=&exp=&asset=

Это мой URL , сгенерированный с помощью:

let refresh = window.location.protocol + "//" + window.location.host + window.location.pathname + '?age=&exp=&asset=';    
window.history.replaceState({ path: refresh }, '', refresh);

И я хотел бы обновить некоторые параметры этого URL, когда пользователи нажимают на кнопку. Например, я хотел бы присвоить значение «age» без изменения остальной части URL:

https://deusbot-trading.com/quiz/age=45+&exp=&asset=


Я пытался:

window.history.replaceState({ 'age=', 'age=45+');

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

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Используя replaceState, вы должны сделать это так: Он даст ожидаемый результат

https://deusbot-trading.com/quiz/age=45+&exp=&asset=

после применения этого

history.replaceState({}, null, location.href.replace('age=','age=45+'))

для дальнейших изменений просто продолжайте в том же духе:

history.replaceState({}, null, location.href.replace('exp=','exp=1000'))

Примечания

Единственная часть, влияющая на URL, - это третий аргумент

history.replaceState(data, title [, url ])

0 голосов
/ 17 апреля 2020

История API pushState plus searchparams

let refresh = new URL("https://deusbot-trading.com/quiz/?age=45+&exp=&asset=") // new URL(location.href)
const refreshObj = { "path": refresh }
refresh.searchParams.set("age",50)

console.log(refresh)

// window.history.replaceState(refreshObj, '', refresh); // has to be on the same origin
...