Czy ktoś może mi powiedzieć, jaka jest różnica między window.location.hrefi 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.hrefi 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, topjest odniesieniem do samego siebie (innymi słowy window=== window.top).
topjest 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.htmlz 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.hrefzostanie zwrócone.
Aby odpowiedzieć na pytanie dotyczące przekierowania, przejdź do window.location.assign(url);
top.location.hrefsię alias o window.top.location.href? Myślałem, że tak zwana zmienna „globalny” jest naprawdę skrót od nieruchomości od windownatomiast alias oznacza, że jest to zmienna, która wskazuje na tym samym miejscu niezależne.
topobiekt ma większy sens wewnątrz ramek. Wewnątrz ramki windowodnosi się do okna bieżącej ramki, a topdo okna najbardziej zewnętrznego, które zawiera ramkę (ramki). Więc:
window.location.href = 'somepage.html';oznacza ładowanie somepage.htmlwewnątrz ramy.
top.location.href = 'somepage.html';oznacza ładowanie somepage.htmlw głównym oknie przeglądarki.
topodnosi się do obiektu okna, który zawiera wszystkie bieżące ramki (ojciec pozostałych okien). windowjest obecny window.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
top.location.hrefmoże więc zawierać łącze do strony „wzorcowej” zawierające wszystkie ramki, a window.location.hrefjedynie łą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;