воскресенье, 9 мая 2010 г.

Навигация в AJAX-приложениях

Всем хороши AJAX-приложения, особенно когда в них работает навигация с помощью функций перехода по истории браузера и можно обновить текущую страницу. Во всех уважающих себя браузерах это реализуется, а печально известные ИЕ6 и ИЕ7, как всегда, отличились. Ну, что с ними делать - жить они еще будут на просторах рунета лет 10, не меньше. Как пел великий бард: "Остается одно - только лечь помереть". Точно такая же ситуация с data:uri и многими другими возможностями современного веба. Для корпоративных приложений, коими я и занимаюсь, поддержка ИЕ6 критична, что не радует. С другой стороны, если отказаться от попыток предоставить все возможности веб-приложений в ИЕ6, можно многое улучшить для пользователей современных браузеров. Чем же мы можем пренебречь в поддержке ИЕ6? Это выпадающие меню, которые можно заменить на страницы со списком пунктов (уже давно так делаем), это картинки интерфейса, которые просто не отобразятся (например, картинки пунктов меню - начинаем так делать), и еще можно отказаться от предоставления истории навигации (видимо, так в ближайшее время начнем делать). Взамен для "полноценных" браузеров мы получаем в разы меньшее количество запросов к серверу и, соответственно, ускорение загрузки страниц, а более интенсивное использование AJAX экономит трафик и ускоряет работу, притом повышая удобство использования веб-приложений. Если учесть, что корпоративные системы зачастую обязаны работать на единственном хосте и не имеют возможности вынести картинки/стили/скрипты на отдельные домены для ускорения загрузки и во избежание пересылки кукисов, то перечисленные выше факторы становятся еще весомее. Что же касается специальных хаков для ИЕ, то практика показала, что с ними и так огромные проблемы производительности ИЕ становятся всепожирающими - для пользователей, кто в веб-приложении работает весь день, утечки памяти ИЕ и так заставляют регулярно перезапускать браузер, а то и перезагружаться, и дополнительный код для обхода багов добавляет еще больше проблем. ТАк что ИЕ6/7 прибить бы надо поскорее, но раз не можем, остается поддерживать для них лишь минимально необходимый функционал.

Что же касается ИЕ6 и систем, которые только с ним и работают... видимо, в особо тяжелых случаях придется писать интерфейсы-врепперы для доступа к ним, скрывающие от пользователей всю убогость означенных систем за современным интерфейсом.

Что касается технической реализации AJAX-навигации, то об этом вполне исчерпывающе расскажут следующие ссылки:
Location
Шаблоны AJAX в ASP.NET. Страница 5. Шаблон уникального URL-адреса
jQuery hashchange event
элементы навигации AJAX в ИЕ8
Якорная навигация на jQuery (graceful degradation)
Динамически подгружаемый контент в Joomla

Существует и JQuery-плугин Address: jQuery Address - Deep linking for the masses, но на мой вкус это слишком утяжеленное решение и необходимости в нем нет.

Upd.
Также небесполезными для меня оказались следующие материалы:
jQuery FAQ – часто задаваемые вопросы по jQuery.
Выносим CSS в пост-загрузку
Выделение строк в многостраничных списках на веб

Здесь есть интересные ссылки: Эта неделя в jQuery, том 6
Вполне изящной выглядит идея создания навигации с помощью селекторов JQuery - решение столь же легкое, сколь и функциональное: jQuery ListNav Plugin
Очередной обзор "лучших", как всегда, самое интересное в комментариях: 10 Best jQuery Plugins for working with Tables Достаточно интересным выглядит вот этот проект DataTables

И чуть не забыл самую важную ссылку: JQuery documentation
Или вот: РУКОВОДСТВО JQUERY

Upd.
jQuery hashchange event

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru