Чего мы желали
Опубликовано: 2022-03-10Я думаю, нас ждут неприятности, хотя я не могу сказать наверняка. Беда — беда я знаю . Однако путь к нему; Я только слышал об этом. Я занимаюсь этим всего десять лет. Я пропустил всю подготовку в прошлый раз. Что я могу сказать наверняка — что я знаю по опыту — так это то, что мое желание, загаданное в гневе, никогда не сбывалось без сожаления об этом.
Десять лет (я не против сказать) — это довольно большой срок. Когда я впервые попал на стажировку по веб-дизайну, старый добрый Internet Explorer уже был посмешищем.
«Если вы заметили, что часть вашего контента появляется и исчезает, а разделы страницы отображаются только наполовину, это хороший признак того, что для элемента требуется макет. [...] ИсправлениеhasLayout
включает в себя не что иное, как объявление свойства CSS, которое заставляет элемент получать макет, хотя обычно он не имеет макета по умолчанию ».
— Свойство Internet Explorer hasLayout
Я ненавидел ИЕ. Я чувствую, что могу справиться с этим сейчас. Я старался не делать этого; Я действительно, искренне сделал. Я бы сказал людям, что было весело поддерживать меня, если вы можете в это поверить.
По мере того, как со всеми остальными браузерами становилось все проще и проще работать, я пытался убедить себя, что, по крайней мере, перед причудливым старым IE все еще есть вызов . Это даже стало чем-то вроде предмета гордости: я настолько хорошо научился исправлять малоизвестные проблемы с IE, что научился уклоняться от них в ходе своей повседневной разработки, не оставляя ничего (ну, меньшего) для страха перед большим «открытием». это в IE и посмотреть, что сломалось».
В каком-то смысле это весело. Веселье . Это была ложь, которую я сказал себе.
/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including “inherit”) without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
— исходный код jQuery для мобильных устройств
Я ненавидел это. Я категорически ненавидел IE во всех его воплощениях. Я ненавидел это до последней капли, как и все остальные.
«В Internet Explorer 6 есть загадочная ошибка, связанная с несколькими плавающими элементами; текстовые символы из последнего плавающего элемента иногда дублируются ниже последнего плавающего элемента. ... Прямая причина — не что иное, как обычные HTML-комментарии, такие как,<!-- end left column -->
, зажатые между числами с плавающей запятой, которые идут последовательно».
— Ошибка повторяющихся символов Explorer 6
Пустая трата моего проклятого времени, вот что это было. Все эти часы, которые я провел, сгорбившись над дрянной виртуальной машиной — перезагрузить, подождать, добавить бессмысленное исправление бессмысленной ошибки, перезагрузить, сбой , снова открыть IE, подождать, перепроверить, что кэширование не было фактором, перезагрузить, подождать, и повторить. Я мог бы сделать гораздо больше в свое время — я мог бы узнать гораздо больше.
Я был уверен, что это не только сдерживает мою работу, и это не просто сдерживает Интернет, но сдерживает меня как разработчика. Что касается второго пункта, то, думаю, я не совсем ошибся — все неясные знания об ошибках браузера IE 6-7, которые я накопил, теперь бесполезны. Все, что я должен продемонстрировать, — это невольное вздрагивание при слове «фильтр», непостижимое предпочтение padding
над margin
и глубоко укоренившийся, но в значительной степени необоснованный страх перед z-index
.
«… дополнительные пробелы приводят к выбору неправильных стилей, если фактическое имя класса является подстрокой (или суперстрокой) какого-либо другого имени класса».
— Ошибка синтаксического анализа пробелов в IE5/Mac.
Я хотел, чтобы это исчезло. Удаленный умным и широко распространенным вирусом, запрещенным законом, Microsoft, наконец, решила сократить потери своего дрянного движка рендеринга и переключилась на движок рендеринга Firefox, Gecko — что угодно — просто уберите его . Но нет. Сеть продолжала развиваться, и мы, разработчики, шли вперед, плывя против течения, непрестанно возвращаясь в прошлое.
Появился Chrome, Firefox стал лучше, новые функции продолжали появляться, захватывающие и бесконечные возможности, представленные появлением адаптивного веб-дизайна, открывались перед нами, а также (быстро в сторону) помните, что у вас будет всего пара дней чтобы все это более или менее работало в старом IE, так что не слишком увлекайтесь.
«ЕСЛИ вы используете IE8, И вы используете подход к нумерации упорядоченного списка CSS, описанный выше, И HTML, который имеет классы, использующие атрибуты CSScounter-reset
иcounter-increment
, СКРЫТ при загрузке страницы, ТОГДА всякий раз, когда этот скрытый Отображается HTML, ВСЕ автоматические номера будут НУЛЕВЫМИ, НО ТОЛЬКО ЕСЛИ НА ЭТОЙ СТРАНИЦЕ ИСПОЛЬЗУЕТСЯ ПСЕВДО-КЛАСС CSS:hover
!”
— Ошибка «зависания» в IE8: самая крутая ошибка IE?
В наши дни трудно представить себе такое разочарование, по крайней мере, для нас, относительно старожилов. Не говоря уже о том, что в наши дни нет невероятного объема работы, связанной с настройкой кроссбраузерности — я слишком хорошо знаю, что она есть. Но трудно не чувствовать угрызения совести: «В мои дни все, что у нас было, — это числа с плавающей запятой, и позвольте мне рассказать вам об ошибке двойного поля в IE» , когда вы слышите о небольшой разнице в том, как CSS Grid работает в одном браузере. другому.
Я был неправ; Я хочу прояснить этот момент. Не плохо, что расстроился. Я не думаю, что кого-то следует винить за то, что он разочаровался в этих старых ошибках браузера, так же, как я не думаю, что кого-то следует обвинять в том, что он разочаровался в каком-либо аспекте веб-разработки сейчас . Нет, я ошибался, делая вывод, к которому меня привел гнев: желание увидеть, как Трезубец сожжен дотла, а земля, на которой он когда-то стоял, посолена.

Подозреваю, что из этой просоленной земли вырастает только одна драматично-ироничная вещь: те самые фрустрации, рожденные заново, для нового поколения веб-разработчиков. Когда я начинал свою карьеру, всего через несколько лет после браузерных войн, эти семена уже пустили корни. Потому что какое-то время — до меня — мы, веб-разработчики, так же проклинали Netscape. Более слабый, глючный, бесспорно худший браузер. Но Internet Explorer — этот браузер понравился разработчикам. И они желали, чтобы те другие браузеры — плохие браузеры — просто исчезли : были удалены хитроумным и широко распространенным вирусом, запрещены законом, Netscape, наконец, решил сократить потери своего дрянного движка рендеринга и переключиться на движок рендеринга IE, Trident — что угодно — просто сделать это уйти . Эти непостижимые ошибки Internet Explorer не произошли по совпадению или небрежности. Они появились потому, что победил Internet Explorer, и мы полюбили его за победу.
Видите ли, наше разочарование и наш гнев лгали нам, как это обычно бывает. Они сказали нам, что поддержка этих других, худших браузеров не только сдерживает нашу работу, и не просто сдерживает Интернет, но сдерживает нас как разработчиков. Пустая трата нашего проклятого времени, вот что это было. Итак, мы сказали себе, что это не только для нашего собственного блага, но и для блага всей сети .
Мы взвесили IE чуть больше. Мы дали ему немного больше права голоса в наших решениях. Итак, имея столько фишек, Microsoft соответственно разыграла свои карты — кто мог их винить? Сначала все создавали сайты для себя, а потом для других. Их слово не было законом , но это было определенно больше, чем предложение . Конечно, они отклонялись от веб-стандартов здесь и там (совсем немного), но, в конце концов, не было ли что-то, реализованное The Biggest Browser, своего рода стандартом де-факто ? Кроме того, поддержка лучшего, более быстрого и простого браузера оказывала услугу самому Интернету! Вместе с Microsoft мы продвигали Интернет вперед! Все выигрывают.
Механизм рендеринга, на котором сегодня работает браузер Microsoft Edge — EdgeHTML — является ответвлением старого корявого Trident. Конечно, это урезанная и значительно улучшенная вилка Trident, но, скажем так, не все оценивают ее достоинства. Команда EdgeHTML всегда работала с несколькими недостатками: первый был техническим, поскольку требовалось огромное количество времени и усилий, чтобы догнать Safari, Firefox и Chrome. Второй был эмоциональным. Это были мы — ты и я — измученные годами использования Internet Explorer, с холодным пренебрежением уставившиеся на радостную синюю строчную букву «е».
Несколько недель назад команда Edge объявила, что скоро откажется от EdgeHTML в пользу Blink, механизма рендеринга, на котором работает Chrome. С этим изменением последние оставшиеся угли Трезубца будут потушены навсегда. Желание, которым я поделился со многими, наконец-то исполнится. По иронии судьбы, как оказалось, EdgeHTML становился довольно солидным движком рендеринга.
Blink — это проект с открытым исходным кодом, которым руководит и управляет Google. Он поддерживает как Chrome, так и Opera, последняя из которых также отказалась от собственного движка рендеринга несколько лет назад.
С огромным отрывом Blink является (и будет все больше и больше) тем, как Интернет воспринимается во всем мире. Blink быстрый, стабильный, оснащен современными функциями и — по сравнению с разработкой для все еще развивающегося EdgeHTML — безболезненный .
Возможно, это произошло слишком поздно, чтобы избавить нас от этих древних ошибок IE, но наша работа будет проще теперь, когда нужно поддерживать на один механизм рендеринга меньше. Мы с вами потеряем еще немного нашего коллективного бремени «а работает ли это кроссбраузерно». Наши проекты будут идти более гладко, и сеть потеряет лишь немного больше того, что когда-то сдерживало ее.
Слово Google не будет законом , но, безусловно, больше, чем предложением . И, возможно, в течение следующих нескольких лет они будут отклоняться от веб-стандартов тут и там (преднамеренно или случайно) в малейшей степени. Но, в конце концов, не является ли что-то, реализованное The Biggest Browser, своего рода стандартом де-факто? Кроме того, как вы могли спорить? В конце концов, отдавая предпочтение лучшему, более быстрому и мощному браузеру, сам Интернет оказывает услугу. Вместе с Google мы будем продвигать Интернет вперед. Все выиграют.
То есть до тех пор, пока небольшие отклонения от стандартов и крошечные, надоедливые ошибки не становятся больше со временем — благодаря двойным силам энтропии и самоуспокоенности. Если решения, которые мы приняли на благо Интернета (вместе с печально известной рекламной компанией, враждебно настроенной к конфиденциальности), не начинают ощущаться немного мрачнее, и в наших умах не начинает формироваться новое пугало — если мы не найдем что наши старые страхи и разочарования снова поднялись (как феникс, который отрисовывается на пару сотен пикселей от того места, где должен, и странно мерцает при прокрутке).
Не нужно большого воображения, чтобы увидеть, как в ближайшие несколько лет появятся новые, более захватывающие движки рендеринга. Требуется так же мало воображения, чтобы увидеть, как они терпят неудачу из-за отсутствия поддержки, поскольку мы предпочитаем «браузер, который используют все» — сначала по собственному выбору, а позже, возможно, из-за неохотного обслуживания «результата».
Впрочем, опять же, я не знаю. Я никогда не видел, чтобы это происходило с движком рендеринга. Я только что слышал всю историю и знаю только из первых рук, чем она закончилась. Я знаю конец по боли старых психических шрамов; от непроизвольного вздрагивания при виде некоторых фрагментов кода и мышечной памяти, которая заставляет меня избегать других. Я знаю это по шуткам на конференциях, которые всегда казались немного утомленными, но все же резонировали так, как я не позволял себе признаться, и все же говорили о тайном желании, которое я хранил глубоко в своем сердце. Горькое, ненавистное желание.
Но эй, слушай. Уже нет. Я имею в виду — я бы никогда. Мне действительно нравится ошибка хорошего движка рендеринга. Я делаю.
«Трехмерные CSS-преобразования сperspective()
визуализируются наизнанку».
— bugs.chromium.org
Я имею в виду, это на самом деле забавная ошибка, верно? Типа, весело в каком-то смысле . Знаешь?
Это весело.
Будет весело .