Qual é a diferença entre
window.location.href="http://example.com";
window.location.replace("http://example.com");
window.location.assign("http://example.com");
Eu li em muitos fóruns que window.location.assign()
apenas substitui o histórico da sessão atual e, portanto, o botão voltar do navegador não funcionará. No entanto, não sou capaz de reproduzir isso.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
javascript
dom
location
milan_9211
fonte
fonte
Respostas:
Eles fazem a mesma coisa:
Eles simplesmente navegam para o novo URL. O
replace
método, por outro lado, navega para o URL sem adicionar um novo registro ao histórico.Portanto, o que você leu nessas muitas formas não está correto. O
assign
método adiciona um novo registro ao histórico.Referência: http://developer.mozilla.org/en/window.location
fonte
assign()
? A partir desta resposta e dos documentos, parece idêntico alocation = ...
.A parte de não poder usar o botão Voltar é uma má interpretação comum. window.location.replace (URL) lança a entrada ONE superior da lista de histórico da página, substituindo-a pela nova entrada, para que o usuário não possa voltar facilmente para a página específica do ONE. A função NÃO limpa toda a lista de histórico da página, nem torna o botão Voltar completamente inoperante.
(Nenhuma função ou combinação de parâmetros que eu conheço pode alterar ou substituir entradas da lista de histórico que você não possui absolutamente por certo - os navegadores geralmente aumentam essa limitação de segurança, simplesmente nem mesmo definindo qualquer operação que possa afetar qualquer entrada que não seja o primeiro da lista de histórico de páginas.Eu tremo ao pensar que tipo de coisas ruins o malware poderia fazer se essa função existisse.)
Se você realmente deseja tornar o botão Voltar inoperante (provavelmente não é "amigável": pense novamente se realmente é o que você quer fazer), "abra" uma nova janela. (Você pode "abrir" um pop-up que nem tem um botão "Voltar" também ... mas os pop-ups não são muito populares hoje em dia :-) Se você quiser manter sua página exibida, não importa o que o usuário faça ( novamente a "facilidade de uso" é questionável), configure um manipulador window.onunload que apenas recarrega sua página mais uma vez, limpo desde o início, sempre.
fonte