Alguém pode me dizer a diferença entre window.location.href
e top.location.href
?
E também onde usar qual.
E qual será o melhor ao redirecionar após uma chamada de ajax no mvc?
Alguém pode me dizer a diferença entre window.location.href
e top.location.href
?
E também onde usar qual.
E qual será o melhor ao redirecionar após uma chamada de ajax no mvc?
Respostas:
window.location.href
retorna a localização da página atual.
top.location.href
(que é um alias de window.top.location.href
) retorna a localização da janela superior na hierarquia de janelas. Se uma janela não tiver pai, top
é uma referência a si mesma (em outras palavras, window
===window.top
).
top
é útil quando você está lidando com frames e quando está lidando com janelas que foram abertas por outras páginas. Por exemplo, se você tiver uma página chamada test.html
com o seguinte script:
var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');
O alerta resultante terá o caminho completo para test.html - não about: blank, que é o window.location.href
que retornaria.
Para responder à sua pergunta sobre redirecionamento, vá com window.location.assign(url);
top.location.href
um alias de window.top.location.href
? Eu pensei que uma variável chamada "global" é realmente uma abreviação para uma propriedade de window
enquanto alias implica que é uma variável independente que aponta para o mesmo lugar.
top
objeto faz mais sentido dentro de quadros. Dentro de um quadro, window
refere-se à janela do quadro atual, enquanto top
se refere à janela mais externa que contém o (s) quadro (s). Assim:
window.location.href = 'somepage.html';
significa carregar somepage.html
dentro do quadro.
top.location.href = 'somepage.html';
significa carregar somepage.html
na janela principal do navegador.
top
refere-se ao objeto janela que contém todos os frames atuais (pai do resto das janelas). window
é a corrente window
.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
portanto, top.location.href
pode conter o link da página "mestre" contendo todos os frames, enquanto window.location.href
contém apenas o link da página "atual".
O primeiro adiciona um item ao seu histórico no qual você pode (ou deveria poder) clicar em "Voltar" e voltar para a página atual.
O segundo substitui o item do histórico atual para que você não possa voltar a ele.
Veja window.location
:
assign(url)
: Coloque o documento no URL fornecido.
replace(url)
: Substitua o documento atual por aquele no URL fornecido. A diferença do assign()
método é que após usar replace()
a página atual não será salvo no histórico da sessão, o que significa que o usuário não poderá usar o botão Voltar para navegar até ela.
window.location.href = url;
é favorecido:
window.location = url;