Обновление адресной строки с новым URL без хеша или перезагрузка страницы
Я либо мечтал о chrome (dev channel), реализующем способ обновления адресной строки через javascript (путь, а не домен), не перезагружая страницу, или они действительно это сделали.
Однако я не могу найти статью, которую, я думаю, читал.
Я сумасшедший или есть способ сделать это (в Chrome)?
p.s. Я не говорю о window.location.hash, et al. Если выше существует ответ на этот вопрос, будет неверно.
Ответы
Ответ 1
Теперь вы можете сделать это в большинстве "современных" браузеров!
Вот оригинальная статья, которую я прочитал (опубликовано 10 июля 2010 г.): HTML5: изменение URL-адреса браузера без обновления страницы.
Для более глубокого изучения pushState/replaceState/popstate (он же HTML5 History API) см. Документы MDN.
TL; DR, вы можете сделать это:
window.history.pushState("object or string", "Title", "/new-url");
См. Мой ответ на Изменение URL-адреса без перезагрузки страницы для ознакомления с основными инструкциями.
Ответ 2
Изменение только того, что после хэш-старых браузеров
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');
Попробуйте запустить их в консоли прямо сейчас!
Ответ 3
Обновите ответ Davids, чтобы даже обнаружить браузеры, которые не поддерживают pushstate:
if (history.pushState) {
window.history.pushState("object or string", "Title", "/new-url");
} else {
document.location.href = "/new-url";
}