Подтвердить что ты не робот

Как я могу изменить местоположение окна без перезагрузки и # взлома?

Сначала я думал, что хэш-хак - это требование, однако, судя по последним обновлениям из facebook, я думаю иначе.

Оригинальный хэш-хак (я не уверен, что это правильный термин) заключается в том, что, изменяя location.hash, можно сохранить состояние в URL-адресе без обновления страницы. Это широко используется приложениями Google и Facebook, а в последнее время #NewTwitter. Однако сегодня я заметил, что Facebook больше не имеет этого "#", если вы используете "современный" браузер - например, хром или firefox. Я дважды проверял, что они не перезагружаются, используя инструменты разработчика и firebug соответственно.

При минимальном поиске в stackoverflow, ближайший к решению использует Flash - однако я отключил Flash и facebook.com по-прежнему работает как шарм. Судя по охвату в chrome 8 dev и firefox 4 beta, я думаю, что это может быть связано с API-интерфейсами HTML5, но код в Facebook не в моих силах, чтобы отлаживать, чтобы узнать, что они сделали.

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

Спасибо, ребята.

P.S. Не работает на IE8, не тестировался на бета-версии IE9.

4b9b3361

Ответ 1

Facebook использует историю api в HTML5. Из этого сообщения в блоге вы можете увидеть, как это работает. В основном они выполняют вызовы, подобные приведенным ниже, для изменения URL-адреса без перезагрузки страницы.

window.history.pushState("object or string", "Title", "/new-url");

Ниже приведен рабочий HTML5 рабочий проект: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-location-interface

К сожалению, IE9 не поддерживает этот api. Новые версии Chrome и FF имеют полную поддержку.