Tenho lido e procurado vantagens / desvantagens entre replaceState()
& pushState()
. Leia também o artigo da Mozilla , e este teste interessante , mas ainda não está claro para mim as diferenças.
Alguém se preocupa em explicar em que eles diferem?
javascript
html
Rikard
fonte
fonte
Respostas:
replaceState()
vai mudar a URL no navegador (ie. pressionando o botão de volta não vai levá-lo de volta)pushState()
irá alterar o URL e manter o antigo no histórico do navegador (ou seja, pressionar o botão Voltar o levará de volta)fonte
Do seu link
Se você deseja simplesmente atualizar a entrada do histórico, use o
replaceState()
contráriopushState()
, use , que manterá a entrada antiga e criará uma nova. Eles são semelhantes, mas ambos têm efeitos diferentes, portanto, depende se você deseja ou não substituir ou criar novas entradas de histórico.Pense nisso como se eu estivesse distribuindo um baralho colocando uma carta sobre a outra (virada para cima) e você só pode pegar a carta do topo da pilha (ou seja, a última carta que distribuí). Digamos que eu coloquei um Valete de Copas na pilha. Agora, para a próxima carta, se eu usar
replaceState
, então tiro aquele Valete de Copas e coloco a próxima carta. O número de cartas é o mesmo, pois acabamos de substituir a carta do topo. Se eu tivesse usado empushState
vez disso, teria colocado a próxima carta no topo do Valete de Copas (agora ambos existem na pilha e a pilha está uma carta acima).Troque os cartões na analogia com URLs e é assim que o histórico de URL é modificado.
fonte
history.replaceState()
para anexar uma consulta no final do meu url. mas quando eu respondo, vou para o url sem consulta anexada. exatamente comopushState()
. !! o url atual não deveria ser atualizado?