Переписать document.location без загрузки - PullRequest
2 голосов
/ 30 мая 2010

Я разрабатываю систему, которая на 100% ajax, кроме, конечно, первого запроса.

Я заинтересован в изменении адреса в document.location, используя javascript. Но я не хочу, чтобы браузер загружал страницу в этом «новом» месте.

Кто-нибудь знает, как я могу это сделать?

Ответы [ 3 ]

8 голосов
/ 30 мая 2010

Изменить весь URL без навигации невозможно, просто представьте себе проблемы безопасности , которые он может вызвать.

Вы можете изменить только location.hash, который является частью URL, следующего за символом #:

location.hash = "foo";

Ваш URL изменится на http://someurl.com/#foo

6 голосов
/ 30 мая 2010

Для перезаписи всего местоположения, а не только части «хеш», можно использовать API истории браузера, хотя в настоящее время он поддерживается только в в Gecko 1.9.3 / Firefox 4 .

history.replaceState({}, document.title, url)
1 голос
/ 30 мая 2010

Вы можете использовать тот же метод, что и Gmail. Добавьте привязку к концу URL, браузер не должен перезагружать страницу, но вы можете прочитать информацию в document.location.href и действовать в соответствии с ней. Это также сохранит функциональность кнопки «Назад» без изменений (при условии, что ваш javascript поддерживает ее)

например

первая страница - http://www.mypage.com/index.php вы нажимаете на следующую "страницу", используя <a href="#page2">link</a>, и она изменяется на http://www.mypage.com/index.php#page2

...