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?
javascript
asp.net-mvc
Igualitário
fonte
fonte
Respostas:
window.location.href
retorna a localização da página atual.top.location.href
(que é um alias dewindow.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 chamadatest.html
com o seguinte 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);
fonte
top.location.href
um alias dewindow.top.location.href
? Eu pensei que uma variável chamada "global" é realmente uma abreviação para uma propriedade dewindow
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, enquantotop
se refere à janela mais externa que contém o (s) quadro (s). Assim:window.location.href = 'somepage.html';
significa carregarsomepage.html
dentro do quadro.top.location.href = 'somepage.html';
significa carregarsomepage.html
na janela principal do navegador.Dois outros objetos interessantes são
self
eparent
.fonte
top
refere-se ao objeto janela que contém todos os frames atuais (pai do resto das janelas).window
é a correntewindow
.http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
portanto,
top.location.href
pode conter o link da página "mestre" contendo todos os frames, enquantowindow.location.href
contém apenas o link da página "atual".fonte
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 doassign()
método é que após usarreplace()
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.é favorecido:
fonte