Последнее время я работал над одним сайтом, о котором хочу немного рассказать. Проект этот оказался долгостроем. Первый раз я с ним соприкоснулся ещё осенью. Тогда пришлось добавлять некоторую нереализованную функциональность, оставшуюся недоделанной с момента ухода программиста, начинавшего работу. Кроме того пришлось переписать некоторые участки существовавшего на тот момент кода из-за того, что я предпочитаю называть недобросовестным программированием. Как это понимать? Очень просто. Мой предшественник местами умышленно писал код не так, чтобы он работал, как того хотел заказчик. Он намерено оставлял незаметные на первый взгляд шероховатости, которые бы заставляли снова и снова обращаться к его услугам и препятствовали бы совместимости с фичами от других разработчиков “из коробки”.
Потом я возвращался к сайту ещё пару раз, когда у заказчика менялся взгляд на то, каким должно быть его сетевое представительство и что именно он хочет на нём видеть (и слышать). Говоря дипломатично, далеко не все эти идеи одобрили бы опытные дизайнеры и девелоперы, но так уж складывается ситуация на рынке, что платящий деньги клиент прав. Местами ситуация осложнялась требованием сохранить простоту редактирования и добавления контента на сайт. Предполагалось, что обслуживать его будут люди не имеющие каких-либо существенных айти навыков.
В итоге многочисленных преобразований получилась очень необычная субстанция, симбиоз различных технологий. Сайт базируется на WordPress, ставшем одним из стандартов де-факто открытых движков, довольно глубоко задействуя его возможности. Есть там и Flash, и JavaScript, но самое забавное, что там причудливо сочетаются и заведомо устаревшие элементы, и довольно свежие, прогрессивные вещи, поддержка которых появилась только в последних версиях браузеров.
Самой большой головной болью стала фоновая музыка, по задумке клиента непрерывно играющая, пока посетитель перемещается по сайту. Сначала попытался реализовать её в виде всплывающего параллельного окна с плеером (вроде того, какое можно увидеть на ли.ру в постах с прикрепленными mp3). Но современные браузеры научились уже очень хорошо бороться с попапами, к тому же возможности управления дочерним окном средствами JS оказались совсем не кроссбраузерными и во многом зависели от персональных настроек пользователя. Переделывать весь сайт под AJAX было уже откровенно поздновато. Выход?
Только фреймы. Да-да, именно те самые страшные штуки, которые последний раз были описаны в спецификации HTML 4.01 в прошлом тысячелетии. Они были отличительной чертой Web 1.0 и успели выйти из моды в то время, как я ещё учился в школе. Если наобум спросить поисковик, скорее всего найдёте несколько рекомендаций обойтись без их использования. И всё же они оказались полезны.
Находящийся в невидимом фрейме простейший плеер из соседнего фрейма управляется куда лучше, чем из соседнего окна. Проблему целостности фреймовой структуры (обычно корректно сайты с фреймами выглядели только при заходе с главной страницы) помогло решить довольно изящное сочетание маленького JS-скрипта, проверящего окружение, и PHP кода, генерирующего недостающую часть на лету по результатам этой проверки. Ещё одну стандартную для фреймов проблему – корректное отображение URL в адресной строке браузера помогла решить свежая, считающаяся новым словом в вебе и таящая в себе полностью ещё не раскрытый потенциал технология HTML5 History API. Последняя, например, сейчас активно используется на сайте социальной сети вконтакте, хотя полноценная поддержка четырьмя основными браузерами появилась только около полугода тому назад.
В итоге чисто утилитарный, представительский сайт локальной фирмы заставил довольно неплохо пошевелить мозгами для создания с нуля собственного решения. Меня этот факт несколько приободряет в плане опыта и чсв, хотя к своему портфолио такую работу не пришьёшь.
З.Ы. прошу прощения у тех, кому может попасться сайт с такой настойчиво навязываемой музыкой. мопед не мой… ну, вы же понимаете, правда?