Jaka jest preferowana metoda zmiany lokalizacji bieżącej strony internetowej za pomocą JavaScript? Widziałem używane zarówno window.navigate, jak i document.location. Czy są jakieś różnice w zachowaniu? Czy są różnice w implementacjach przeglądarek?
javascript
html
navigation
dthrasher
źródło
źródło
window.location.href
jest to pełna implementacja, alewindow.location
osiąga to samo. Zobacz docs.sun.com/source/816-6408-10/location.htm : „Jeśli przypiszesz ciąg znaków dolocation
właściwości obiektu, JavaScript tworzylocation
obiekt i przypisuje ten ciąg do jegohref
właściwości”.window.location
ale to niekoniecznie oznacza: developer.mozilla.org/en/window.location .window.location.href = 'URL';
a takżewindow.location.assign('URL');
metodę, która jest przeznaczona do ponownego ładowania nowej strony. Więcej informacji można znaleźć w3schools.com/jsref/obj_location.aspwindow.navigate
jest zastrzeżoną metodą, używaną przez Internet Explorera (jestem pewien, czy inne przeglądarki naśladują ją ze względu na kompatybilność, Chrome nie).document.location
lubwindow.location
są obiektami standardowymi (zobacz różne specyfikacje HTML / HTML5 / DOM).document.location = someURL
(lubwindow.location = someURL
) jest prawdopodobnie obsługiwany ze względu na starszy kod. Właściwy sposób to zrobićdocument.location.href = someURL
, a możedocument.location.assign(someURL)
.źródło
document.locatio n jest (przestarzałą, ale nadal obecną) właściwością ciągu tylko do odczytu, zastąpioną przez document.url .
źródło
window.location
wpływa również na oprawę,najlepsza forma jaką znalazłem to:
A co gorsza:
Zrobiłem ogromny test przeglądarki i niektóre rzadkie IE z kilkoma wtyczkami stają się niezdefiniowane w drugiej formie.
źródło
window.location
wpłynie na docelową przeglądarkę. document.location wpłynie tylko na przeglądarkę i ramkę / iframe.źródło
window.navigate
NIE jest obsługiwane w niektórych przeglądarkach, więc należy tego unikać. Każda z pozostałych metod wykorzystujących właściwość lokalizacji jest najbardziej niezawodnym i spójnym podejściemźródło
Poszedłbym z
window.location = "http://...";
. Od kilku lat koduję JavaScript dla różnych przeglądarek i nigdy nie spotkałem się z problemami przy stosowaniu tego podejścia.window.navigate
iwindow.location.href
wydaje mi się trochę dziwne.źródło
Naprawdę nie ma różnicy; jest na to około 5 różnych metod. Jednak te, które widzę najczęściej, są
document.location
iwindow.location
dlatego, że są obsługiwane przez wszystkie główne przeglądarki. (Osobiście nigdy nie widziałemwindow.navigate
używanego w kodzie produkcyjnym, więc może nie ma bardzo dobrego wsparcia?)źródło
wsparcie dla
document.location
jest również dobre, chociaż jest to przestarzała metoda. Używam tej metody od jakiegoś czasu bez żadnych problemów. więcej informacji można znaleźć tutaj:https://developer.mozilla.org/en-US/docs/Web/API/document.location
źródło
Możesz przenieść swoją stronę za pomocą
źródło