Последние статьи
Дефицит идей.На данный момент в сайтостроении, да и как везде, в общем то, наблюдается некий застой в решениях. Для сайтов...
Yandex с блекждеком и шлюхами.Как то размышляя о способах монетизации различных веб-проектов, я увидел некоторую нестыковку на...
Flash: построение графика с динамическим обновлением данных.До того, как я открыл для себя такие веши как Munin и прочие утилиты для отслеживания состояния серверов - я...
Защита комментариев от спама.Все люди, которые вели, ведут или собираются вести блоги, форумы или гостевые книги сталкиваются с...
Nginx и Bitrix. Использование их без использования апача. Встала тут задача поднять сервер, исключительно под сайты, написанные на базе CMS Bitrix (в силу...
Eval - наше все!Казалось бы, весь интернет напичкан статьями и рекомендациями к программистам, в которых говориться, что eval...
Кризис. Пожуем эту тему еще разок ? Бредоглава 0 (мы же программисты, у нас обязана быть нулевая глава :). Введение . О мировом экономическом...
Дизайн ЯндексаЯндекс в своем  желании заработать как можно больше демонстрирует просто потрясяющую способность...

AJAX и history, или как не потеряться в Web 2.0

В копилку начинающим разработчикам Web 2.0 :)
С ростом количества сайтов, сделанных с использованием AJAX-а (ну как же, это же модно), возникает вопрос к их разработчикам - и как же, позвольте спросить, там будет работать кнопка "Назад", которой некоторые пользователи все еще продолжают иногда пользоваться ?  Не говоря уж о том, что неплохо было бы иметь возможность добавить страницу в свои закладки. Вариантов может быть несколько:
Решение 1.
Откручивание истории посещений страниц в iframe, как это сделано допустим на gmail.com. То есть при переходе на страницу в iframe подгружается некий JS код, который выполняется. В случае перехода по кнопке "Back" - он опять таки нормально отрабатывает.

Все нормально работает, ура... но вот с закладками - проблема, URL то у страницы все время один и тот же, и соответственно посетитель сохранив такую страницу в Bookmarks и потом зайдя по ней увидит не полюбившийся пост или статью, а всего лишь главную страницу сайта, что, я думаю, не добавит ему любви к вашему сайту . Итак:

Решение 2.
Как  вариант - необходимо рассматривать решение, которое бы изменяло URL страницы, и тут сразу приходит вполне очевидное решение: якоря. То есть при клике на ссылку делать переход на #label и, поскольку URL можно легко распарсить из JS (location.hash) и понять что же мы реально хотим, делать подгрузку той или иной страницы. И все бы хорошо, но если с кликами по ссылке и вызове соответствующих java-script обработчиков все понятно, то как мы узнаем, что посетитель нажал на кнопку "Back" ? Как показали эксперименты, событие onload при нажатии на кнопку "back" не вызвается в Опере вообще никогда. Если честно, у меня логика разработчиков этого броузера всегда вызывала недоумение,  но  поделать тут что либо очень сложно. Поэтому для удобства пользователей сего броузера разбор URL-а придется производить по таймауту. Плюс IE надо создать ссылки с используемыми якорями, этот броузер не мог нас не порадовать своей оптимизацией затрат нашего процессорного времени и  учитывает переход по ссылке только если такой якорь реально существует. 

И вроде бы все хорошо, но в IE 5.5 реального изменения location.hash не происходит, несмотря на то что в строке ввода URL - URL меняется ! Поразительно. С одной стороны - а кому он нужен, этот 5.5,  когда на дворе XXI век и IE 7 уже уверенно показывает всем кузькину мать и заставляет седеть новое поколение верстальщиков и вебмастеров ?  Но по мне - строка "Этот сайт оптимизирован под работу в броузере IE x.x" - должна остаться в том же, прошлом веке, поэтому рекомендую использовать комбинированный вариант, совмещающий первый (для IE 5.5), и второй - для всех остальных. Других вариантов исправить эту ситуацию - лично я пока не вижу, хотя если у вас есть что предложить - буду рад выслушать :)

вернуться в список статей