Как я могу изменить расположение окна без перезагрузки и взлома? - PullRequest
17 голосов
/ 22 октября 2010

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

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

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

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

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

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

1 Ответ

20 голосов
/ 23 октября 2010

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 имеют полную поддержку.

...