Как Github делает pushState без тэгов?

Я изучаю лучший способ использовать историю HTML5 api aka psuhState с надлежащим резервом для браузеров HTML4.

Github использует историю api для просмотра дерева (следующая ссылка - это всего лишь пример, а не библиотека github):

https://github.com/browserstate/History.js/

Что я не могу понять, так это то, как они обрабатывают эту функциональность для браузеров HTML4, таких как Firefox 3.5?

Я рассмотрел, в частности, history.js(связанный выше), чтобы справиться с такими вещами. Но для реализации браузеров HTML4 требуется реализация хеша #, которую я бы хотел избежать.

Если вы посещаете Github и просматриваете дерево каталогов с помощью браузера HTML4, он выглядит идентично браузеру HTML5 (это состояние URL-адреса, то есть).

Если отключить JavaScript в FF3.5, URL-адрес, который ранее выглядел следующим образом:

https://github.com/browserstate/history.js/tree/master/tests

теперь выглядит следующим образом:

https://github.com/browserstate/history.js/tree/a32e91aa1fe5909a29abb690a37f6c129e98068e/tests

Любые мысли?

Ответ 1

GitHub использует http://pjax.heroku.com/

Для браузеров, которые не поддерживают pushState, он просто ухудшает обычное старое загрузочное поведение полной страницы.

Ответ 2

Отзывчивый веб-дизайн из будущего - это презентация в виде слайд-шоу от Kyle Neath от Kyle Neath, которая работает в GitHub, которая может вам помочь.

PushState. replaceState. Hashbangs. AJAX. PJAX. Свекла. Медведи. Баттлестар Галактика.

Отзывчивый веб-дизайн - это намного больше, чем размер вашего экран. Этот разговор о том, как GitHub обрабатывает ссылки, URL-адрес бар, частичные обновления страниц и объясняет, почему я думаю, что история HTML5 API - самая важная вещь, которая должна произойти с разработкой интерфейса с Firebug.