Изменить URL с помощью JavaScript (без хэш-тега) - PullRequest
9 голосов
/ 07 ноября 2010

Мне интересно, как facebook меняет URL, когда я переключаюсь между изображениями в альбоме?Нет хеш-тега, просто реальный URL.

Пример: текущий URL: facebook.com/photo.php?fbid=XXXXXX1 и, если я нажму следующий, URL изменится на facebook.com/photo.php? fbid = XXXXXX2

Кто-нибудь знает, как реализовать это с помощью JavaScript?

Ответы [ 4 ]

9 голосов
/ 07 ноября 2010

Да.Извлечение https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

Это выдвигает новое состояние истории (вещь HTML5) вместо использования хеш-ключа.

1 голос
/ 19 февраля 2011

Суммируя все ответы,

мы можем сказать (я не кодировщик FB), что Facebook использует:

  • HTML5 window.history.pushState / replaceState / popState методы в браузере, которые поддерживают эти методы (я думаю, один из них - Chrome). Таким образом, Facebook меняет реальный URL (не только часть после символа #).

  • В других браузерах, которые не поддерживают эти новые методы HTML5 (например, IE6 / IE7 и IE8), Facebook просто изменяет часть URL после символа #, просто устанавливая window.location.hash свойство.

1 голос
/ 07 ноября 2010

Моя первая догадка будет:

document.location = facebook.com/photo.php?fbid=XXXXXX2;

С некоторым способом предотвращения действия по умолчанию перезагрузить страницу.

0 голосов
/ 07 ноября 2010

В моих тестах изменяется только хэш-тег:

например. реальный URL:

http://www.facebook.com/photo.php?fbid=x&set=z

и нажав следующие результаты в:

http://www.facebook.com/photo.php?fbid=x&set=z#!/photo.php?fbid=y&set=z&pid=pid&id=id

Часть после хэша настроена для Google AJAX crawl . Но для браузера это просто хеш (идентификатор фрагмента).

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