Я пытаюсь реализовать просмотр содержимого, как это делается на Facebook, когда пользователь просматривает фотографии. Я предполагаю, что все знакомы с тем просмотром фотографий, где вы можете нажать "следующий" и "предыдущий" и сразу получить следующую или предыдущую фотографию (вы также можете перемещаться с помощью клавиш со стрелками).
Когда вы нажимаете "Далее", например, вы замечаете, что страница не обновляется - только контент. Сначала я думал, что это делается с помощью простых вызовов ajax, которые обновляют только "контент" в этом случае изображение, описание и комментарии. Но потом я заметил, что также изменился URL-адрес на панели инструментов "Местоположение" моего браузера! Я попытался проверить это с помощью Firebug и обнаружил, что при нажатии "next" загружается только следующая фотография, и я до сих пор не знаю, откуда загружаются комментарии и метаданные изображений (описание, время, теги,...),
Может кто-нибудь объяснить, как этот метод будет выполнен - изменение URL-адреса страницы без обновления страницы (или даже без "мигания страницы", если она обновляется из кеша). Я знаю, как изменять содержимое страницы с помощью ajax, но URL-адрес этой страницы остается неизменным. Если я нажму кнопку "Обновить", я снова получу первую страницу. Но не на Facebook, так как даже "window.location" изменяется каждый раз без фактического перенаправления.
Другое, что я заметил, это то, что нижняя панель инструментов (приложения, чат,...) всегда "сверху". Даже если вы меняете страницу, эта панель инструментов не обновляется и всегда остается на вершине - она даже не "мигает", как другие обновленные страницы (либо с веб-сервера, либо из локального кеша). Я предполагаю, что это та же техника, что и выше, - какие-то "поддельные" перенаправления или что-то еще?
Ответ - pushState
if (window.history.pushState)
window.history.pushState([object or string], [title], [new link]);
Вы будете улыбаться:)