Обновление адресной строки новым URL без хэша или перезагрузка страницы - PullRequest
591 голосов
/ 27 июля 2010

Я либо мечтал о том, чтобы chrome (dev channel) реализовал способ обновления адресной строки через javascript (путь, а не домен) без перезагрузки страницы, или они действительно сделали это.

Однако я не могу найти статью, которую думаю Я прочитал.

Я сумасшедший или есть способ сделать это (в Chrome)?

p.s. Я не говорю о window.location.hash и др. Если вышеприведенное существует , ответ на этот вопрос будет неверным.

Ответы [ 3 ]

818 голосов
/ 27 июля 2010

Теперь вы можете сделать это в большинстве "современных" браузеров!

Вот оригинальная статья, которую я прочитал (опубликовано 10 июля 2010 г.): HTML5: Смена браузера-URL без обновления страницы .

Для более глубокого изучения pushState / replaceState / popstate (он же API-интерфейс истории HTML5) см. Документы MDN .

TL; DR, вы можете сделать это:

window.history.pushState("object or string", "Title", "/new-url");

См. Мой ответ на Измените URL, не перезагружая страницу , чтобы получить основные инструкции.

136 голосов
/ 01 сентября 2016

Изменение только того, что после хэша - старые браузеры

document.location.hash = 'lookAtMeNow';

Изменение полного URL.Chrome, Firefox, IE10 +

history.pushState('data to be passed', 'Title of the page', '/test');

Приведенное выше добавит новую запись в историю, поэтому вы можете нажать кнопку Назад, чтобы перейти в предыдущее состояние.Чтобы изменить URL-адрес без добавления новой записи в историю, используйте

history.replaceState('data to be passed', 'Title of the page', '/test');

Попробуйте запустить их в консоли сейчас!

23 голосов
/ 04 июля 2017

Обновление ответа Davids для определения даже браузеров, которые не поддерживают pushstate:

if (history.pushState) {
  window.history.pushState("object or string", "Title", "/new-url");
} else {
  document.location.href = "/new-url";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...