Как Facebook меняет URL в адресной строке браузера без перезагрузки страницы или использования # или? - PullRequest
6 голосов
/ 22 июля 2011

Пару месяцев назад я увидел новую функцию, развернутую на vkontakte.ru (русский FB): при переходе между страницами пользователей перезагрузка браузера не происходит. Вместо этого новая страница предварительно загружается, а затем отображается. Музыкальный проигрыватель, который находится на странице (он закреплен на верхнем колонтитуле), продолжает воспроизводиться непрерывно.

Однако URL-адрес в адресной строке браузера изменяется, а не с помощью хеш-тега или строки запроса.

Итак, моя страница vk.com/myPage ... Я нажимаю на друга, его страница загружается, а затем отображается, когда URL в адресной строке браузера изменяется на vk.com/myfriendJoe, и перезагрузка браузера не происходит .

Обратите внимание, что он работает только с новейшими браузерами, такими как более поздние версии Safari и Chrome, для других, как Firefox 3.6, он использует запасной вариант, в котором используются хэштеги и строки запросов.

Я провел некоторое исследование и обнаружил window.history.pushState, но, похоже, он работает только со строками запроса.

Любые идеи будут с благодарностью. Спасибо.

Ответы [ 3 ]

1 голос
/ 22 июля 2011

Если вы используете современный браузер, совместимый с HTML5, вы можете использовать history.pushState() API.

Подробнее здесь: https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

1 голос
/ 22 июля 2011

Это новый исторический API , определенный HTML5. Вы можете увидеть еще одну демонстрацию здесь . Вы совершенно правы, что pushState это делает, но не работает только со строками запроса (как показывает эта страница, используются относительные URL-адреса с корнем, такие как /history/first и /history/second) .

0 голосов
/ 22 июля 2011

Использует ли сайт скрытые вызовы ajax, чтобы заполнить определенный раздел страницы новым контентом?Это один из способов не менять URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...