Переписать 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

Другие вопросы по тегам