Обновите URL браузера без перезагрузки страницы - PullRequest
10 голосов
/ 16 августа 2011

Можно ли изменить URL-адрес, отображаемый в адресной строке браузера, не переходя браузер на эту страницу? Например, после обновления содержимого страницы с помощью вызова AJAX?

Насколько я понимаю, это невозможно, поэтому такие сайты, как твиттер и фейсбук, обновляют хэш-тег для вызовов ajax.

То есть до сегодняшнего дня, когда я перешел на http://8tracks.com/ и начал играть с фильтром с правой стороны ... Включая и выключая разные жанры, я заметил, что, хотя он делал вызовы ajax для обновления содержимого на странице также динамически обновлялся URL-адрес.

Кто-нибудь знает, как они это делают?

(кроме того, в настоящее время я использую Chrome, но когда я вернулся и снова посмотрел с IE9, я заметил, что URL не обновлялся ... возможно, это только Chrome?)

Ответы [ 2 ]

22 голосов
/ 16 августа 2011

Это возможно в современных браузерах с использованием API истории HTML5:

history.pushState(null, null, '/some-path')

См. https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method

Это работает в Firefox, Chrome, Opera, Safari (не IE).

0 голосов
/ 16 декабря 2012

также вы можете использовать плагин истории Jquery.Это также даст поддержку браузерам html4.

Вот статья, рассказывающая об этом: http://veerasundaravel.wordpress.com/2011/12/02/change-browser-url-with-reloading-the-page-jquery-html5/

Вот еще один вопрос, который дает больше возможностей: Плагин jQuery History

...