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