Dias atrás li no blog Blogging Developer um post que falava sobre a diferença entre o location.replace do location.href. (link).
Neste post é apenas comentado para que é usado, ou seja, redirecionamento de páginas. Mas vamos complementar com algumas informações.
A grande diferença entre eles é que o .replace é um método já o .href é uma propriedade.
Sendo assim, cada um tem um comportamento diferente.
O .replace faz com que a página seja substituída, desta forma não gerando histórico de navegação, já que a página é a mesma substituída por outra. Já o .href altera o identificador da página, sendo assim criando uma nova página e consecutivamente criando histórico.
Exemplos:
Fica aqui uma questão para os gurus da NET, o por que dos dois seguintes exemplos não funcionarem corretamente?
Favor deixas as considerações nos comentários =D
Por que nos dois exemplos é necessário um click no id hello, ou seja, o texto redirecionar.
=D rsrs. Mas o por que disso então? As funções não são iguais? A única diferença é que uma esta chamando dentro de uma ação e a outra diretamente quando a página carrega?
Olá Ruan,
O problema está no .click, essa função espera um clique em algo.
$(document).ready(function() { $("#hello").click(function(){ location.href="http://www.ruancarlos.com.br"; }) });Já o segundo exemplo você passa direto o
location.href ou o location.replace
Se nos dois primeiros exemplos você clicar no Redirecionar que está dentro da div Hello ele irá executar a ação.
=) Abs
Sim isso eu sei, mas a questão é, por que quando eu tenho uma ação ele gera histórico e quando eu não tenho essa ação ele não gera. É justamente essa a dúvida, talvez a resposta esteja nas entranhas do JavaScript, mas acho que não vale apena o esforço =D.
Vlw pelo comentário =)
Vlw pelo comentário, vou acompanhar o blog a partir de agora, muito interessantes os posts.
Ruan:
Primeiramente valeu pelo blog. O meu problema é que preciso usar location.replace com num form usando o metodo POST para que a outra pagina receba as variaveis do tipo hidden e só consigo com o metodo GET. Você teria uma solução.
desde já agradeço.
Abraço.
vc pode colocar a url na action do form.
este post é incrível! Obrigado pela informação!
Olá Ruan!
Cara, você me deixou curioso.
Por que quando tem a ação ele gera histórico e quando não tem ele não gera?
Fabricio, é exatamente essa a questão =D
Também queria saber.
Acredito que o .replace ele faz uma alteraçao na mesma pagina, por isso nao cria historico pois o historico seria a propria pagina, ja o href existe um redirecionamento para uma nova pagina, ao contrario do .replace que altera o “corpo” da pagina atual nao tendo historico pq nao criou uma nova pagina.
Acho meio loko mas acho que é isso.
Buscando na net achei isso:
http://www.roseindia.net/javascript/javascript-location-replace.shtml
É isso pode ser uma explicação.