Czy ktoś może mi powiedzieć, jaka jest różnica między window.location.href
i top.location.href
?
A także gdzie użyć którego.
A który z nich będzie lepszy w przypadku przekierowania po wywołaniu ajax w mvc?
Czy ktoś może mi powiedzieć, jaka jest różnica między window.location.href
i top.location.href
?
A także gdzie użyć którego.
A który z nich będzie lepszy w przypadku przekierowania po wywołaniu ajax w mvc?
Odpowiedzi:
window.location.href
zwraca lokalizację bieżącej strony.
top.location.href
(który jest aliasem window.top.location.href
) zwraca położenie najwyższego okna w hierarchii okien. Jeśli okno nie ma rodzica, top
jest odniesieniem do samego siebie (innymi słowy window
=== window.top
).
top
jest przydatny zarówno w przypadku ramek, jak i okien, które zostały otwarte przez inne strony. Na przykład, jeśli masz stronę wywołaną test.html
z następującym skryptem:
var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');
Wynikowy alert będzie miał pełną ścieżkę do test.html - nie about: blank, czyli to, co window.location.href
zostanie zwrócone.
Aby odpowiedzieć na pytanie dotyczące przekierowania, przejdź do window.location.assign(url);
top.location.href
się alias o window.top.location.href
? Myślałem, że tak zwana zmienna „globalny” jest naprawdę skrót od nieruchomości od window
natomiast alias oznacza, że jest to zmienna, która wskazuje na tym samym miejscu niezależne.
top
obiekt ma większy sens wewnątrz ramek. Wewnątrz ramki window
odnosi się do okna bieżącej ramki, a top
do okna najbardziej zewnętrznego, które zawiera ramkę (ramki). Więc:
window.location.href = 'somepage.html';
oznacza ładowanie somepage.html
wewnątrz ramy.
top.location.href = 'somepage.html';
oznacza ładowanie somepage.html
w głównym oknie przeglądarki.
top
odnosi się do obiektu okna, który zawiera wszystkie bieżące ramki (ojciec pozostałych okien). window
jest obecny window
.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
top.location.href
może więc zawierać łącze do strony „wzorcowej” zawierające wszystkie ramki, a window.location.href
jedynie łącze do strony „bieżącej”.
Pierwsza dodaje element do historii, w którym możesz (lub powinieneś być w stanie) kliknąć „Wstecz” i wrócić do bieżącej strony.
Drugi zastępuje bieżący element historii, więc nie można do niego wrócić.
Zobacz window.location
:
assign(url)
: Załaduj dokument pod podanym adresem URL.
replace(url)
: Zastąp bieżący dokument dokumentem znajdującym się pod podanym adresem URL. Różnica w stosunku do tej assign()
metody polega na tym, że po użyciu replace()
bieżącej strony nie zostanie zapisana w historii sesji, co oznacza, że użytkownik nie będzie mógł użyć przycisku Wstecz, aby przejść do niej.
window.location.href = url;
jest faworyzowany w stosunku do:
window.location = url;