Jaka jest różnica pomiędzy
window.location.href="http://example.com";
window.location.replace("http://example.com");
window.location.assign("http://example.com");
Czytałem na wielu forach, że window.location.assign()
po prostu podmienia aktualną historię sesji, a co za tym idzie przycisk wstecz przeglądarki nie będzie działał. Jednak nie jestem w stanie tego odtworzyć.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
javascript
dom
location
milan_9211
źródło
źródło
Odpowiedzi:
Robią to samo:
Po prostu przechodzą do nowego adresu URL. Z
replace
drugiej strony metoda przechodzi do adresu URL bez dodawania nowego rekordu do historii.Zatem to, co przeczytałeś w tych wielu formach, nie jest poprawne.
assign
Sposób nie dodać nowy rekord w historii.Źródła: http://developer.mozilla.org/en/window.location
źródło
assign()
? Z tej odpowiedzi i dokumentów wygląda to identycznie jaklocation = ...
.Część dotycząca niemożności użycia przycisku Wstecz jest często błędną interpretacją. window.location.replace (URL) wyrzuca górny JEDEN wpis z listy historii stron, zastępując go nowym wpisem, aby użytkownik nie mógł łatwo wrócić do JEDNEJ konkretnej strony internetowej. Ta funkcja NIE czyści całej listy historii stron, ani nie sprawia, że przycisk Wstecz nie działa.
(ŻADNA funkcja ani kombinacja parametrów, o których wiem, nie mogą zmienić lub nadpisać wpisów na liście historii, których absolutnie nie jesteś właścicielem - przeglądarki generalnie narzucają to ograniczenie bezpieczeństwa, po prostu nie definiując żadnej operacji, która mogłaby w ogóle wpłynąć na dowolny wpis inny niż do góry jeden na liście historii str. I boję się pomyśleć, co rodzaju nikczemnych rzeczy złośliwego oprogramowania może zrobić, jeśli taka funkcja istnieje.)
Jeśli naprawdę chcesz, aby przycisk Wstecz nie działał (prawdopodobnie nie był „przyjazny dla użytkownika”: pomyśl jeszcze raz, jeśli naprawdę chcesz to zrobić), „otwórz” zupełnie nowe okno. (Można „open” popup, że nawet nie ma przycisku „Wstecz” zbyt ... ale wyskakujące okienka nie są bardzo popularne tych dni :-) Jeśli chcesz zachować swoją stronę pokazując Nieważne co robi użytkownik ( znowu "przyjazność dla użytkownika" jest wątpliwa), skonfiguruj program obsługi window.onunload, który po prostu przeładowuje twoją stronę od nowa za każdym razem czysto od samego początku.
źródło