Alguém pode me dizer a diferença entre window.location.hrefe 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.hrefe 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.htmlcom 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.hrefque retornaria.
Para responder à sua pergunta sobre redirecionamento, vá com window.location.assign(url);
top.location.hrefum alias de window.top.location.href? Eu pensei que uma variável chamada "global" é realmente uma abreviação para uma propriedade de windowenquanto alias implica que é uma variável independente que aponta para o mesmo lugar.
topobjeto faz mais sentido dentro de quadros. Dentro de um quadro, windowrefere-se à janela do quadro atual, enquanto topse 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.htmlna janela principal do navegador.
toprefere-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.hrefpode conter o link da página "mestre" contendo todos os frames, enquanto window.location.hrefconté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;