Обновление адресной строки с новым URL без хэша или перезагрузки страницы

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

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

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

p.s. Я говорю не об окне.местоположение.hash, et al. Если вышесказанное существует ответ на этот вопрос будет неверный.

3 ответов


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

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

для более глубокого изучения pushState / replaceState / popstate (он же API истории HTML5) см. MDN docs.

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

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

см. мой ответ на измените URL без перезагрузки страница для базового руководства.


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

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');

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


обновление до Davids ответ даже обнаружить браузеры не поддерживает pushstate:

if (history.pushState) {
  window.history.pushState("object or string", "Title", "/new-url");
} else {
  document.location.href = "/new-url";
}