Aktualizacja paska adresu z nowym adresem URL bez hasha lub przeładowania strony
Albo Śniło mi się, że chrome (Dev channel) implementuje sposób aktualizacji paska adresu za pomocą javascript (ścieżka, nie domena) bez przeładowywania strony, albo naprawdę to zrobili.
Jednak nie mogę znaleźć artykułu, który przeczytałem.
Zwariowałem czy jest na to jakiś sposób (w Chrome)?
P. s. nie mówię o oknie.miejsce.hash, et al. Jeśli powyższe istnieje odpowiedź na to pytanie będzie nieprawdziwa.
3 answers
Teraz możesz to zrobić w większości "nowoczesnych" przeglądarek!
Oto oryginalny artykuł, który przeczytałem (opublikowany w lipcu 10, 2010): HTML5: zmiana adresu URL przeglądarki bez odświeżania strony .
Aby uzyskać bardziej szczegółowe informacje na temat pushState/replaceState/popstate (aka HTML5 History API) Zobacz dokumenty MDN.TL;DR, możesz to zrobić:
window.history.pushState("object or string", "Title", "/new-url");
Zobacz moją odpowiedź na zmodyfikuj adres URL bez przeładowywania strony , aby uzyskać podstawowe instrukcje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:57
Zmiana tylko tego, co po hash - starych przeglądarkach
document.location.hash = 'lookAtMeNow';
Zmiana pełnego adresu URL. Chrome, Firefox, IE10 +
history.pushState('data to be passed', 'Title of the page', '/test');
Powyższe spowoduje dodanie nowego wpisu do historii, więc możesz nacisnąć przycisk Wstecz, aby przejść do poprzedniego stanu. Aby zmienić adres URL bez dodawania nowego wpisu do historii, użyj
history.replaceState('data to be passed', 'Title of the page', '/test');
Spróbuj uruchomić je w konsoli teraz!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-17 20:02:00
Update to Davids answer to even detect browsers doesn ' t support pushstate:
if (history.pushState) {
window.history.pushState("object or string", "Title", "/new-url");
} else {
document.location.href = "/new-url";
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-04 11:01:52