С сентября по сей май я как бешеный черт работаю над большим долгостроем: хостинг + конструктор сайтов + весьма специфический маркетинг. Программировал и проектировал всё это дело
в одиночку и спасибо, что хостинговую часть помогал проектировать наш системный админ. Изначально были поставлены нереальные сжатые сроки. Последние месяцы были сложные. Я находился в состоянии 200% интеллектуальной мобилизации 24/7. Если осенью я на досуге ещё увлекался проектированием своего скриптового языка для игр, украшал его фичами и прибамбасами как новогоднюю ёлку, то потом работа, как осьминожье чудовище, огнедышащий сука кракен, поглотила весь мой досуг. Я должен извиниться, почтенные френды, что надолго пропал из общения в сети. (Сейчас почитал френд-ленту и с новой силой ощутил, как же я соскучился по вам!)
Опыт конечно колоссальный, и самая лакомая в творческом плане здесь часть - это конструктор сайтов. Фактически был сделан wysiwyg редактор html верстки - прямо в броузере можно с нуля сверстать html-страницу. Нефигово? Дайте пять. Но как я вкусил на этом пути всех прелестей browser wars и наматерился на Internet Explorer 6!
В IE6 отказывалось работать всё, что только можно. Хаки, специфические для одного броузера, не работали в другом, приходилось писать хаки для хаков. Это было просто что-то невероятное. Суки производители броузеров не поддерживают единые стандарты индустрии, мегафак, в результате разработка кросс-платформенных решений на javascript может превратиться в садомазо-вакханалию с голой жопой над пчелиным ульем. Ярче всего запомнилась эпопея с картинками в формате png. Известно, что IE6 настолько прекрасен, что не имеет встроенной поддержки этого графического формата. Обычно используется хак, который заменяет
<img src="alpha.png">
на
<img src="blank_pixel.gif" style="filter:progid:DXImageTransform.Mi
crosoft.AlphaImageLoader
(src='alpha.png', sizingMethod='scale');" width="100" height="100">
Как видно, заменяется значение атрибута src. Поэтому если сохранить верстку в IE6, а потом посмотреть, но уже в другом броузере, например, в Firefox, который о filter:progid: ни сном, ни рылом, то filter:progid: не сработает и в качестве картинки будет показан только blank_pixel.gif (пустой прозрачный гиф размером в один пиксель). Хуже того, если затем снова сохранить верстку в Firefox, то свойство filter:progid: будет утеряно. И верстка испортится уже и для IE6.
Мне пришлось писать хак для хака в IE6 (#$%!!! простите мой крепкий матросский диалект французского). Сей хак убирает filter:progid: и возвращает атрибуту src правильное значение перед сохранением верстки, а после сохранения возвращает filter:progid:. Впрочем, этого оказалось мало, т.к. при обновлении src и background-image множества элементов страницы, по какой-то неведомой причине IE6 иногда не перерисовывал страницу. Тогда мне пришлось как-то форсировать рендеринг и писать уже плять
хак для хака для хака. Эпопея, плять!
К этому можно добавить, что я пробовал другой экзотический хак окромя DXImageTransform.Microsoft.AlphaImageLoa
der. Уже не помню, какие аббревиатуры юзались этим хаком для достижения его черной цели, однако в результате окно IE6 просто схлопывалось без генерации какого-либо мало-мальского сообщения или лога. Приветы!
Другой пример: такое фундаментальное свойство как text-align в разных броузерах должно принимать разные свойства, чтобы добиться одинакового эффекта (например, center и moz-center).
В конце концов, я заставил это дело работать в разных броузерах (тестировалось по крайней мере в 5 зверях), если не 100%, то по всем основным статьям. Проект удачно стартовал. Теперь меня украшают шишки и боевые шрамы, а карма
разработчиков IE6 приобрела чернильный цвет. Наверное, со временем выработаю к броузерным войнам просветленное философское отношение, но пока эмоции сильны и забористы. Вот такие войны броузеров.