Переписать Document.location без загрузки
-
05-10-2019 - |
Вопрос
Я разрабатываю систему, которая составляет 100% AJAX, кроме конечно, первый запрос.
Я заинтересован в изменении адреса в документе. С помощью JavaScript. Но я не хочу, чтобы браузер загрузил страницу на это «новое» местоположение.
Кто-нибудь знает, как я могу это сделать?
Решение
Чтобы переписать все местоположение, а не только «Часть HASH», API истории браузера может использоваться, хотя в настоящее время это только кажется Поддерживается в Gecko 1.9.3 / Firefox 4.
history.replaceState({}, document.title, url)
Другие советы
Изменение всего URL без навигации невозможно, просто представьте проблемы с безопасностью что это может генерировать.
Вы можете изменить только location.hash
, что является частью URL, которая следует за #
символ:
location.hash = "foo";
Ваш URL изменится на http://someurl.com/#foo.
Вы можете использовать тот же метод, который использует Gmail. Добавьте якорь до конца URL, браузер не должен перезагрузить страницу, но вы можете прочитать информацию в document.location.href
и действовать на это. Это также сохранит функциональные возможности нажатой кнопки (предоставляя ваш JavaScript поддерживает его)
Например
Первая страница есть http://www.mypage.com/index.php
Вы нажимаете на следующую «страницу», используя <a href="#page2">link</a>
и это меняется на http://www.mypage.com/index.php#page2