Конец эпохи Trident

Original author: Der Schepp
  • Translation
tl;dr Я бы сказал, что Microsoft на несколько световых лет опередила всех в разработке инструментов для проектирования сложных веб-сайтов. Сейчас эти технологии изобретают заново на руинах погибшей цивилизации.



Когда я был ребёнком, меня всегда завораживали истории о древних цивилизациях. Я зачитывался книгами об Атлантиде, об истории открытия Трои Генрихом Шлиманом, о греках, римлянах, империи инков и Древнем Египте. И меня всегда восхищали их продвинутые знания в области астрономии, математики и медицины, их невероятные достижения, возведение этих огромных монументов и построение высокофункциональных социальных систем. Что ещё более невероятно, так это то, что всё это было сделано за тысячи лет до появления христианской культуры!

Однако все эти высокоразвитые цивилизации в конце концов исчезли. Некоторые просто тихо вымерли, других вытеснили цивилизациями с лучшим вооружением. В большинстве случаев достижения побеждённых не передавались доминирующей группе, никак не обогащая победителей. Они просто исчезали. Что я всегда считал неудачным развитием событий.

Эпоха движка Trident


Теперь для миллионов пользователей Windows 10 компания Microsoft выпускает новый браузер Edge на основе Chromium. И это означает конец целой эпохи, которая прошла под знаком движка Trident.

Но разве эра Trident уже не закончилась, когда появился Edge? Не совсем.

Когда Microsoft создала браузер Edge в 2015 году, в реальности она просто форкнула Trident в EdgeHTML и почистила множество устаревших путей кода, таких как ActiveX (альтернатива Java-апплетам от Microsoft) или эмуляция старых движков рендеринга IE. Родственность двух браузеров очевидна, если почитать статьи самих разработчиков или по баг-репортам, когда одни и те же уязвимости одинаково влияют на IE 11 и Edge 17. На самом деле большинство первоначальных улучшений Edge получено от Chakra, движка JavaScript, и мало что можно отнести к самому движку рендеринга. Переименование браузера можно рассматривать скорее как маркетинговый ход, поскольку удаление устаревших функций уже началось раньше, когда браузер ещё назывался Internet Explorer.

Перезагрузка Internet Explorer под новым названием не вернула сердца веб-разработчиков. До сегодняшнего дня Microsoft занята игрой в догонялки. Поэтому, когда мы сегодня волнуемся о веб-платформе, это происходит не из-за нового выпуска Edge, а из-за того, что Google представляет новые идеи или API во время Google I/O или саммита Chrome Dev. Многие из этих инноваций приходят от других команд в Google, работающих на таких платформах Google, как Angular и AMP, или на продуктах Google, таких как Gmail, Search, Drive, Maps, Google Docs, Analytics или, в последнее время, Lighthouse. На самом деле, многое из того, что определяет HTML5, связано с тем, что Google ищет способ улучшить веб-платформу, чтобы лучше применить свои идеи в веб-приложениях. Помните Google Gears? Или потом Google Chrome Frame?

Забавно, что в старые времена тот же процесс стимулировал инновации в Internet Explorer. Возможности ActiveX добавили в Internet Explorer 3.0 вместе с тегом <object>, добавив ещё одну «цель компиляции» для конкурента Java. Конечно, идея исходила не от команды IE. Или возьмём то, что мы сегодня знаем как AJAX: идея ленивой выборки контента в фоновом режиме с помощью JavaScript родилась в команде Exchange / Outlook Web Access, этот продукт можно рассматривать как предшественника Gmail. Произведя несколько трюков на серверах Microsoft, они тихо выкатили компонент вместе с Internet Explorer 5.0 в 1999 году. Только через шесть лет был изобретён термин AJAX и его концепции стали широко известны.

«Мы довольно быстро договорились выпустить это как часть библиотеки MSXML. Вот откуда взялось название XMLHTTP — компонент в основном работает по HTTP и не имеет конкретной связи с XML, но так проще всего было вытолкнуть его в прод, так что нам пришлось втиснуть XML в название (к тому же, XML была модной технологией в то время, и это казалось хорошим маркетингом для компонента)».

То же самое касается и document.designMode (видимо, пожелание исходило от команды Hotmail) и contentEditable, DOM, Drag-n-Drop API, iframе и доступа к буферу обмена. Internet Explorer также стал первым браузером, который научился менять разрешения на лету через всплывающее окошко с запросом:



В те дни Microsoft в одиночку двигала вперёд интернет. Над Internet Explorer работало около тысячи (!) человек с бюджетом 100 миллионов долларов в год. С ними почти никто не мог конкурировать. Это было грандиозно!

«[Скотт] Айзек также изобрел HTML-тег iframe. Было высказано предположение, что название означает «фрейм Айзека», хотя Скотт отрицал это».

В 2012 году Internet Explorer последний раз представил новые функции по запросу других бизнес-подразделений. В то время для операционной системы Windows 8 сделали Windows Store, и появились соответствующие приложения Windows Store Apps. Однажды написанные, эти приложения потом запускаются на Windows, Xbox и Windows Phone. Поскольку Microsoft опоздала с каталогом приложений, то должна была максимально снизить барьер входа для разработчиков. Поэтому появилась идея разрешить в каталоге веб-приложения. В качестве прокси между веб-стеком и операционной системой была создана JavaScript- библиотека под названием WinJS, а средой выполнения для этих приложений стал Internet Explorer 10.



Но чтобы смоделировать Windows UI с помощью веб-технологий, Microsoft пришлось добавить в IE множество новых возможностей: CSS Grid, CSS Flexbox, CSS Scroll Snap Points и Pointer Events API для взаимодействия с сенсорным экраном и стилусом (последнее было необходимо, поскольку Apple подала патент на Touch API).


Microsoft даже изобрела то, что позже стало Origin Trials. Об этом рассказывается в подкасте, которое мы записали с Джейкобом Росси из команды Edge в 2015 году.

Возвращаясь к моим рассуждениям о древних цивилизациях и их достижениях, мне кажется, что Internet Explorer представил многие технологии, которые впоследствии были реализованы заново и которые мы теперь отмечаем как инновации. Хотя наши современные переосмысления предлагают больше возможностей и удобств, меня удивляет, почему сообщество разработчиков выбрало только очень немногие из них. Упомянутые выше инновации были подхвачены либо потому, что браузеры стремились к совместимости с IE, либо потому, что Microsoft оказалась в нужное время в нужном месте. Но их было гораздо больше!

Забытые технологии


MHTML


Первый в списке — MHTML или «MIME-инкапсуляция агрегированных HTML-документов». MHTML задумывался как формат упаковки контента, а концепция во многом повторяла способ добавления вложений в электронной почте. MHTML берёт HTML-файл, а в дополнительные разделы встраивает все необходимые ресурсы, такие как CSS, JavaScript-файлы и изображения, в кодировке base64. Это как data URI на стероидах. Можете считать MHTML предшественником Web Bundles. Формат поддерживался начиная с IE 5, а также в Opera на движке Presto. Ни один другой браузер официально не поддерживал MHTML, но Chromium позже добавил эту функцию, за флагом chrome://flags/#save-page-as-mhtml. MHTML предложили в качестве открытого стандарта IETF, но он почему-то не взлетел.

Интересный факт: Outlook Express использует MHTML внутри файлов .eml для хранения писем вместе с соответствующими вложениями на диске.

Спецэффекты между страницами


В Internet Explorer были фильтры перехода между страницами, которые можно определить как заголовок HTTP или в виде метатега:

<meta http-equiv="Page-Enter"
      content="RevealTrans(Duration=0.600, Transition=6)">

Как в спецэффектах для видеомонтажа, при навигации такой фильтр включает плавный переход от страницы к странице вместо обычной резкой загрузки новых страниц, как мы привыкли. Поддерживается обширный список фильтров, которые можно выбрать по номеру:

  • 0 — Box in
  • 1 — Box out
  • 2 — Circle in
  • 3 — Circle out
  • 4 — Wipe up
  • 5 — Wipe down
  • 6 — Wipe right
  • 7 — Wipe left
  • 8 — Vertical blinds
  • 9 — Horizontal blinds
  • 10 — Checkerboard across
  • 11 — Checkerboard down
  • 12 — Random dissolve
  • 13 — Split vertical in
  • 14 — Split vertical out
  • 15 — Split horizontal in
  • 16 — Split horizontal out
  • 17 — Strips left down
  • 18 — Strips left up
  • 19 — Strips right down
  • 20 — Strips right up
  • 21 — Random bars horizontal
  • 22 — Random bars vertical
  • 23 — Случайный фильтр из списка

Фильтр можно активировать на ввод страницы Page-Enter, а также установить дополнительные спецэффекты на Page-Exit, Site-Enter и Site-Exit. Эти мягкие переходы между страницами — то, что предлагают в новом формате порталов.

Спецэффекты между объектами


Аналогично переходу между страницами, можно использовать фильтры для перехода между двумя состояниями одного и того же объекта DOM. Это похоже на ramjet Рича Харриса, только он не трансформируется между двумя состояниями, а вместо этого смешивается в киношном стиле.

По своему эффекту эти фильтры похожи на CSS Transitions или анимированную функцию CSS crossfade().

Сначала применяем к элементу фильтр смешивания (длительностью 600 мс):

img.style.filter = 'blendTrans(duration=0.600)';

Затем, прежде чем вносить какие-либо изменения в объект, замораживаем его текущее состояние:

img.filters.blendTrans.apply();

Наконец, изменяем источник изображения и вызываем переход:

img.src = 'different-src.jpg';
img.filters.blendTrans.play();



Фильтры эффектов


Многие помнят эту категорию фильтров ещё со времён Internet Explorer 4+. В 1997 году они уже предлагали функциональность, близкую к CSS Filters, когда те впервые появились в Apple Safari 6 в 2012 году.



Matrix Filter из Internet Explorer можно применять для выполнения действий, которые позже будут представлены как часть функциональности CSS Transforms:

transform: rotate(15deg);
filter: progid:DXImageTransform.Microsoft.Matrix(
            M11=0.9659258262890683,
            M12=-0.2588190451025207,
            M21=0.2588190451025207,
            M22=0.9659258262890683,
            SizingMethod='auto expand');

Или можете использовать Chroma Filter для выделения пикселей определённого цвета, чтобы создать закруглённые углы или применить маску.

Градиентный фильтр


Вы думали, что поддержка градиентов впервые появилась в Internet Explorer 10? Это не совсем так, потому что для градиентов тоже был CSS-фильтр:

filter: progid:DXImageTransform.Microsoft.gradient(enabled='false',
                startColorstr=#550000FF, endColorstr=#55FFFF00)

Также обратите внимание, что Internet Explorer уже поддерживал 8-значные hex-коды для цветов RGBA, которые официально появились в CSS только в 2016 году как часть CSS Color Module Level 4.

Стилизация полосы прокрутки


Internet Explorer внедрил стилизацию полосы прокрутки ещё в 1999 году, и только в 2013 году разработчики Safari придумали собственную механику.



body {
  scrollbar-base-color: #C0C0C0;
  scrollbar-3dlight-color: #C0C0C0;
  scrollbar-highlight-color: #C0C0C0;
  scrollbar-track-color: #EBEBEB;
  scrollbar-arrow-color: black;
  scrollbar-shadow-color: #C0C0C0;
  scrollbar-darkshadow-color: #C0C0C0;
}

Box-Sizing


Internet Explorer изначально реализовал эту модель так, словно box-sizing: border-box установлен по умолчанию. Хотя многим подход Microsoft показался более логичным и удобным, но CSS WG в конечном счёте выбрала другое значение по умолчанию, где width относится не к внешней ширине блока, а к ширине контента внутри.



«Логично, что блок измеряется от края до края. Возьмите физическую коробку, любую коробку. Положите внутрь какой-нибудь предмет, который значительно меньше коробки. Попросите любого измерить ширину коробки. Он измерит расстояние между краями коробки («границы»). Никому и в голову не придёт измерять содержимое внутри. Веб-дизайнеры, создающие блоки для контента, заботятся о видимой ширине блока, о расстоянии от границы до границы. Именно границы, а не контент, являются визуальными сигналами для пользователей. Никого не интересует ширина контента».

Только в IE 6 добавили дополнительный режим рендеринга, на этот раз совместимый со стандартом. Он не был включен по умолчанию, чтобы не испортить старые макеты. Его нужно было специально выбрать объявлением doctype в начале HTML-документа (аналог 'use strict'; в JavaScript).

Сегодня все возвращаются обратно к модели IE, переопределяя термины в самом начале CSS:

html {
  box-sizing: border-box;
}

*, *::before, *::after {
  box-sizing: inherit;
}

CSS Expressions


До седьмой версии у Internet Explorer была отличная функция под названием CSS Expressions, выражения CSS, также известные как «динамические свойства». По сути, это были фрагменты JavaScript, завёрнутые в функцию CSS, а результат вычисления в этой функции становился значением свойства CSS. Их можно рассматривать как один из предшественников CSS Houdini и функции calc() и других функций.

Например, можете написать собственные функции min() и max():

width: expression(Math.min(this.parentElement.clientWidth, 400) + 'px');

Приведённый выше код устанавливает ширину элемента равной ширине родителя до тех пор, пока она не превысит 400px. На этом она остановится, примерно как действует max-width. Ключевое слово this ссылается на текущий элемент.

Поскольку IE поддерживает псевдоэлементы только с восьмой версии, вы можете использовать выражения CSS для их «полифиллинга», например:

zoom: expression(
    this.runtimeStyle.zoom = '1',
    this.insertBefore(document.createElement('span'),(this.hasChildNodes()
                        ? this.childNodes[0]
                        : null)).className='before',
    this.appendChild(document.createElement('span')).className='after'
  );

Приведённый код присваивается относительно постороннему CSS-свойству zoom. Первым делом он отключает дальнейшее выполнение выражения, заменив его статическим значением 1. Это предотвращает создание всё новых и новых элементов с каждым новым запуском. Затем создаёт элементы <span>, которые вводит в начале и в конце своей области содержимого, с именами классов .before и .after. Internet Explorer 8 был первой версией, которая поддерживала псевдоэлементы, но в то же время отказалась от поддержки CSS-выражений, поэтому приведённый код не повредит браузерам с псевдоэлементами.

От CSS-выражений в IE практически сразу отказались, потому что они быстро приобрели плохую репутацию. Всё дело в том, что с помощью CSS-выражений очень легко нагрузить CPU и снизить скорость рендеринга. «Проблема» с выражениями CSS заключалась в том, что они выполнялись после каждого события, зарегистрированного браузером, включая изменение размера, прокрутку и перемещение мыши. Посмотрите на следующий пример:

background: expression('#'+Math.floor(Math.random()*16777216).toString(16));

Этот код вычисляет рандомный цвет, который затем ставится фоном. Можете увидеть его в действии на следующем видео (предупреждение об эпилепсии из-за мигающих цветов):


Видите, как цвет фона изменяется при каждом движении мыши? Это действительно плохо сказывается на производительности, поэтому ведущие специалисты по веб-разработке советовали не использовать выражения CSS или заменить их реальным JavaScript. Однако в те дни немногие хорошо разбирались в написании JavaScript, включая меня. Сегодня я бы сказал, что всё зависит от качества кода: можно нагрузить CPU и плохим кодом JavaScript тоже. Одно из решений проблемы показано в коде псевдоэлемента, где выражение отключается после первого запуска, присваивая статическое this.style или this.runtimeStyle (ещё одно фирменное изобретение Microsoft, представляющее объект style с ещё более высоким приоритетом в каскаде CSS, чем встроенные стили). Если значение должно остаться динамическим, вы могли изменить код — и выполнять дорогостоящие вычисления только когда это необходимо:

<script>
  window.calcWidth = '100%';
  window.updateWidth = false;
  window.onresize = function() {
    window.updateWidth = true;
  };
</script>
<style>
  .element {
    width: expression(
      updateWidth ?
      (
        calcWidth = Math.min(this.parentElement.clientWidth, 400) + 'px',
        updateWidth = false
      ) :
      calcWidth
    );
  }
</style>

Но почему не использовать простой JavaScript? Действительно, всё это можно делать на чистом JavaScript. Но выражения легче запустить для многих различных типов элементов, поскольку вы можете использовать селекторы. А для псевдоэлементов выражение polyfill в CSS имеет ещё больше смысла, потому что здесь же создаются и реальные псевдоэлементы. Так что всё зависит от обстоятельств.

Шрифты


Internet Explorer также был первым браузером, который позволил использовать произвольные шрифты. Соответствующее правило @font-face появилось CSS 2.0, но его удалили в CSS 2.1, поскольку поддержка браузерами оказалась слишком плохой. Microsoft продолжала поддерживать его и связала с новым форматом файлов, который разработали вместе с компанией-разработчиком шрифтов Monotype: это Embedded OpenType (EOT). Формат EOT должен был решить эти проблемы с двух сторон. С одной стороны, средства разработки вроде Microsoft Web Embedding Fonts Tool (WEFT) принимали только исходные шрифты, не отмеченные флагом no embedding. Таким образом, создатели шрифтов могли запретить их использование в интернете. С другой стороны, во время создания вы указываете список разрешённых URL-адресов для шрифта, а браузер будет проверять его и отображать шрифт только в том случае, если текущий URL-адрес совпадает с адресом в списке.

В 2008 году Microsoft и Monotype передали EOT для стандартизации в W3C. Но в конечном счёте разработчики других браузеров его не поддержали, поскольку вместо стандартного алгоритма сжатия gzip он (тогда) использовал запатентованный алгоритм MicroType Express. Поэтому вместо этого они попросили W3C разработать другой формат встраивания шрифтов, только на основе gzip, и так в 2010 году появился формат WOFF.

«Вместо того, чтобы внедрять в шрифт URL документа, он использует функцию HTTP (origin), которая позволяет задать доменную часть URL документов: менее точно, чем полный URL, но достаточно для большинства производителей шрифтов. В конце концов, WOFF всё же принял части алгоритма MicroType Express и новый алгоритм сжатия Brotli, чтобы увеличить степень сжатия по сравнению с gzip».

Интересный факт: когда вы хотите встроить шрифты в презентацию PowerPoint 2007 или 2010, шрифты встраиваются в файл .pptx в формате EOT.

HTML-компоненты: Attached Behaviors, Element Behaviors и Default Behaviors


Ещё в 1998 году Microsoft предлагала методы, близкие к тому, что мы сегодня знаем как CSS Houdini и Web Components. Они назвались HTML Components:

«В последнее время HTML со скриптами всё чаще используется в качестве прикладной платформы для разработки. Одним из сдерживающих факторов является то, что невозможно было формализовать сервисы приложения HTML или повторно использовать их в качестве компонентов на другой HTML-странице или приложении. HTML-компоненты устраняют этот недостаток; HTML-компонент (сокращённо HTC) обеспечивает механизм многоразовой инкапсуляции компонента, реализованного на HTML, CSS и JavaScript.

Компонентизация — мощная парадигма, которая позволяет пользователям создавать приложения, используя «строительные блоки» функциональности, без необходимости реализовывать эти строительные блоки самостоятельно или понимания, как работает вся структура в мельчайших деталях. Этот метод упрощает разработку сложных приложений, разбивая их на более управляемые блоки и позволяя повторно использовать строительные блоки в других приложениях. Компоненты HTML привносят этот мощный метод разработки в веб-приложения».

На самом деле, работу Microsoft признали образцом prior art в начале обсуждения Web Components.

Первым HTML-компоненты реализовал Internet Explorer 5 в 1999 году, а последним — Internet Explorer 9 в 2010 году.

Всего было три типа HTML-компонентов: Attached Behavior, Element Behavior и Default Behavior.

Attached Behavior


Поведение Attached Behavior работало аналогично CSS Houdini Worklet, где у вас есть файл (.htc), который добавляет новые возможности любому элементу, к которому он присоединён. Само присоединение делается через CSS:

img {
  behavior: url(roll.htc);
}

Файлы .htc состояли из специальной XML-разметки для связи с внешним миром и скриптового блока, который определяет, как будет вести себя элемент. Присоединённый элемент DOM был представлен как глобальный element. Следующее Attached Behavior в примере ниже адаптировано для элементов изображения и будет менять их источник каждый раз, когда наводится курсор мыши (спасибо за помощь автору всех последующих примеров Джасперу Пьерру):

<public:attach event="onmouseover" onevent="rollover()" />
<public:attach event="onmouseout" onevent="rollout()" />
<script>
var originalSrc = element.src;
function rollover() {
    element.src = "rollover-" + originalSrc;
}
function rollout() {
    element.src = originalSrc;
}
</script>

Element Behavior


Element Behavior идёт чуть дальше: он переносит в файл .htc не только поведение, но и разметку, тем самым создавая пользовательский элемент. Это очень похоже на элементы Custom Elements в стандарте Web Components. Они тоже снаружи выглядят тривиальными (Light DOM), но внутри скрывают сложную структуру Shadow DOM. Версия Shadow DOM от Microsoft называется Viewlink. Поддержку Viewlink нужно указать явно (opt-in). Как и Shadow DOM, она защитит внутреннюю структуру от любых стилей документа или внешних скриптов, которые пытаются ею манипулировать.

«Viewlink — функция Element Behavior, которая позволяет писать полностью инкапсулированные динамические HTML (DHTML) поведения и импортировать их в качестве надёжных пользовательских элементов на веб-странице».

Для Element Behavior уже было недостаточно привязать элемент HTML к поведению средствами CSS. Вместо этого приходилось использовать возможности XML, создавая для пользовательских компонентов новое пространство имён:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:custom>
<head>
  <?import namespace="custom" implementation="RollImgComponent.htc">
</head>

custom — это произвольное название пространства имён XML. Тег <?import> делает то, для чего мы ранее использовали CSS: ссылается на файл .htc с кодом этого компонента. В файл .htc нужно было добавить ещё несколько частей:

  1. Определить пользовательский HTML-тег, под которым будет использоваться элемент: <public:component tagname="rollimg">
  2. Определить любые атрибуты HTML, которые допускает этот элемент, например: <public:property name="src" />
  3. Добавить внутреннюю разметку вашего элемента аналогично современному элементу <template>.

<public:component tagname="rollimg">
  <public:attach event="onmouseover" onevent="rollover()" />
  <public:attach event="onmouseout" onevent="rollout()" />
  <public:property name="src" />
</public:component>

<img id="image" />

<script>
  // IE's document.getElementByID
  var img = document.all['image'];
  img.src = element.src;
  img.id = undefined;
  element.appendChild(img);

  function rollover() {
    img.src = "rollover-" + element.src;
  }
  function rollout() {
    img.src = element.src;
  }
</script>

Обратите внимание, что в пределах файла .htc у вас собственный объект document со своей областью действия. Теперь вы готовы использовать свой пользовательский элемент в разметке HTML:

<custom:rollimg src="logo.png">

Такие пользовательские элементы синхронно анализируются парсером и создаются. В нашем случае DOM страницы после создания элемента будет выглядеть следующим образом:

<custom:rollimg src="logo.png">
  <img src="logo.png" />
</custom:rollimg>

Как видите, эти элементы img стали видимыми, так что с ними можно работать из HTML-документа через обход DOM или CSS. Возможно, это нежелательное свойство. Чтобы исправить это, нужно активировать в Internet Explorer версию Shadow DOM под названием viewLink:

<public:component tagname="rollimg">
  <public:attach event="onmouseover" onevent="rollover()" />
  <public:attach event="onmouseout" onevent="rollout()" />
  <public:property name="src" />
</public:component>

<img id="image" />

<script>
  // Activates IE's Shadow DOM
  defaults.viewLink = document;

  // IE's document.getElementByID
  var img = document.all['image'];
  img.src = element.src;

  function rollover() {
    img.src = "rollover-" + element.src;
  }
  function rollout() {
    img.src = element.src;
  }
</script>

Default Behavior


Поведение по умолчанию — третий вариант HTML-компонентов. Это в основном стандартные библиотеки, встроенные в браузер, которые вы можете использовать через расширение CSS или XML и которые открывают совершенно новый набор функций.

Запуск загрузки


Одна из них — behavior:url(#default#download).

В настоящее время, когда вы хотите запустить загрузку просто с фронтенда, вы можете поставить ссылку с атрибутом download и выполнить на ней .click(). Ну, а в прежние времена было так:

<!--
the following element needs to be created once in the document.
It then exposes new utility methods you can use, like .startDownload()
-->
<span id="download" style="behavior:url(#default#download)"></span>

<button onclick="download.startDownload('menu.pdf')">Download</button>

Хранение данных


Другим очень полезным поведением по умолчанию было behavior: url(#default#userData). Оно решало те же проблемы, что и localStorage, только совершенно иначе. Ниже показано, как сохранить и восстановить значения элементов input в старом IE:

<style>
  #store {
    behavior: url(#default#userData);
  }
</style>

<script>
  function save(){
    store.setAttribute('username', username.value);
    store.setAttribute('email', email.value);
    store.save('exampleStore');
  }
  function restore(){
    store.load('exampleStore');
    username.value = store.getAttribute('username');
    email.value = store.getAttribute('email');
  }
</script>

<span id="store"></span>
<input id="username">
<input id="email">
<button onclick="restore()">restore values</button>
<button onclick="save()">save values</button>

Были даже полифиллы localStorage для IE, которые использовали данную технику.

Client Capabilities


Другим поведением по умолчанию является Client Capabilities. Как намекает название, оно позволяет больше узнать о клиенте. Наиболее интересной информацией является тип подключения, аналогично современному navigator.offline или Network Information API:

<span id="clientcapabilities"
      style="behavior:url(#default#clientCaps)">
</span>

<script>
  // Either "modem" or "lan" or "offline"
  var connectionType = clientcapabilities.connectionType;
</script>

Анимация через TIME


Думаете, Internet Explorer не поддерживает анимацию? На самом деле в те времена уже существовал SMIL, Synchronized Multimedia Integration Language. Это язык разметки для описания мультимедийных презентаций, определяющий разметку для синхронизации, компоновки, анимации, визуальных переходов и встраивания мультимедиа. Хотя Microsoft активно участвовала в создании этого нового стандарта W3C, она в конечном счёте решила не внедрять его в Internet Explorer. Вместо этого Microsoft вывела из него диалект, который интегрировала с HTML и тоже представила в W3C для стандартизации: это HTML+TIME (Timed Interactive Multimedia Extensions). Позже W3C переработала его в нечто, ставшее частью SMIL 2.0 и получившее название XHTML+TIME. В 1999 году Internet Explorer 5 стал первым браузером с поддержкой этой технологии в версии 1.0. Год спустя в Internet Explorer 5.5 внедрили HTML+TIME версии 2.0, реализация которой была ближе к черновику XHTML+TIME от W3C. Впрочем, Microsoft продолжала придерживаться старого названия, без первой буквы 'X'.

Эта функция также инкапсулировалась в Default Behavior, которое следовало сначала активировать либо с помощью CSS, либо путём расширения пространства имён (XML). После этого становились доступны различные функции анимации. Например, отображение и скрытие элементов пять раз подряд по десять секунд:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <style>
    .time {
      behavior: url(#default#time2);
    }
  </style>
</head>
<body>
<div class="time" repeatcount="5" dur="10" timecontainer="par">
  <p class="time" begin="0" dur="4">First line of text.</p>
  <p class="time" begin="2" dur="4">Second line of text.</p>
  <p class="time" begin="4" dur="4">Third line of text.</p>
  <p class="time" begin="6" dur="4">Fourth line of text.</p>
</div>
</body>
</html>


Или, переключившись на вариант пространства имён XML, вы можете анимировать HTML-атрибуты, такие как цвет фона body:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:t="urn:schemas-microsoft-com:time">
<head>
  <?import namespace="t" implementation="#default#time2">
</head>
<body id="body">
  <t:animateColor targetElement="body"
    attributeName="backgroundColor"
    from="black" to="white"
    begin="0" dur="3" fill="hold"/>
</body>
</html>


Или можете встроить видео или аудио в HTML, аналогично тому, как вы сегодня используете <video> и <audio>, даже с элементами управления:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:t ="urn:schemas-microsoft-com:time">
<head>
  <?import namespace="t" implementation="#default#time2">
</head>
<body>
  <t:video id="video" src="video.mpeg" type="video/mpeg"/>
  <div class="controls">
    <button type="button" onclick="video.resumeElement()">play</button>
    <button type="button" onclick="video.pauseElement()">pause</button>
    <button type="button" onclick="video.speed = 1">1x</button>
    <button type="button" onclick="video.speed = 4">4x</button>
  </div>
</body>
</html>


Поддерживались все форматы, для которых базовая операционная система Windows находила соответствующий декодер. По умолчанию это были, например, MPEG-1 и AVI, закодированные с помощью кодека Microsoft Video-1.

Особый формат от Microsoft вы даже могли сочетать с HTML5:

<video id="html5video" autoplay muted>
  <source src="video.mp4" type="video/mp4"/>
  <t:video id="video" src="video.mpeg" type="video/mpeg"/>
</video>
<div class="controls">
  <button type="button"
    onclick="html5video.play ? html5video.play() : video.resumeElement()">play</button>
  <button type="button"
    onclick="html5video.pause ? html5video.pause() : video.pauseElement()">pause</button>
  <button type="button"
    onclick="html5video.playbackRate = video.speed = 1">1x</button>
  <button type="button"
    onclick="html5video.playbackRate = video.speed = 4">4x</button>
</div>

См. демо. Чтобы запустить оригинальный код, понадобится виртуальная машина с IE 5.5-8.

Vector Markup Language


В 1999 году Microsoft также стала первой, кто поддержал формат векторной графики в браузере: язык векторной разметки Vector Markup Language, сокращённо VML. Он был разработан Autodesk, Hewlett-Packard, Macromedia, Microsoft и Vision и представлен W3C в 1998 году. К сожалению, примерно в то же время W3C получил конкурирующую заявку под названием Precision Graphics Markup Language (PGML), разработанную Adobe Systems и Sun Microsystems. Таким образом, W3C объединила оба предложения и представила формат масштабируемой векторной графики Scalable Vector Graphics (SVG) в 2001 году. Первым браузером с поддержкой SVG стал Konqueror 3.2 в 2004 году.

Честно говоря, к VML не было особых претензий, кроме того, что он работал исключительно внутри HTML, а не по внешней ссылке. Вот как создаётся эллипс в SVG и VML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SVG Ellipse</title>
</head>
<body>
<svg>
  <ellipse cx="200"
    cy="80"
    rx="100"
    ry="50"
    fill="yellow"
    stroke="purple"
    stroke-width="2" />
</svg>
</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:v="urn:schemas-microsoft-com:vml" lang="en">
<head>
  <title>VML Ellipse</title>
  <style>v\:* {behavior:url(#default#VML);}</style>
</head>
<body>
<v:oval
  style="position: absolute; width: 200; height: 100; left: 100; top: 30;"
  fillcolor="yellow"
  strokecolor="purple"
  strokeweight="2">
</v:oval>
</body>
</html>

Оба диалекта выглядят похоже и одинаково незнакомо для нас, веб-разработчиков.

Привязка данных


Начиная с Internet Explorer 4.0 в 1997 году, вы могли встраивать в свой документ источники данных. Это делается путём ссылки на внешний файл CSV через элемент <object>:

<object id="data" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
 <param name="DataURL" value="data.csv">
</object>

Вместо CSV-файла можно установить соединение с сервером баз данных (не рекомендуется в режиме записи :)

<object id="data" classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33">
    <param name="Server"  value="http://server">
    <param name="Connect" value="dsn=database;uid=guest;pwd=">
    <param name="SQL"     value="select name from people">
</object>

(Обратите внимание, как изменяется атрибут classid в зависимости от типа данных).

Наконец, можно сослаться на внешний XML-файл с помощью тега <xml>

<xml src="http://localhost/xmlFile.xml"></xml>

…или XML, встроенный внутрь HTML как источник данных:

<body>
<xml id="data">
  <?xml version="1.0" encoding="UTF-8" ?>
  <records>
    <record>
      <name>Willa Galloway</name>
      <email>tortor@dictum.com</email>
      <phone>098-122-8540</phone>
      <city>Tenali</city>
    </record>
    <record>
      ...
    </record>
    ...
  </records>
</xml>
</body>

Такой встроенный фрагмент XML называется XML Data Island и обрабатывается примерно так же, как сегодня обрабатываются SVG, встроенные в HTML, или HTML, встроенные в SVG <foreignObject>, переключая парсер на лету.

«XML Data Islands — это XML-документ внутри HTML-страницы. Такой подход позволяет избежать необходимости писать код (т. е. скрипт) лишь для загрузки XML-документа или его загрузки через тег. Скрипты с клиентской стороны могут напрямую обращаться к этим «островам данных XML», и они также могут быть привязаны к HTML-элементам».

Теперь, когда у вас на странице есть данные, можете использовать привязку данных Internet Explorer, например, для редактирования:

<input type="text" datasrc="#data" datafld="name">

Двусторонняя привязка данных


Вы можете привязывать данные не только к input, но и к произвольным элементам. И можете создать двусторонний поток данных, просто с декларативной разметкой:

<xml id="data">
  <record>
    <name></name>
  </record>
</xml>
<h1>Hello, <span datasrc="#data" datafld="name"></span>!</h1>
<label>Your name: <input datasrc="#data"
                         datafld="name"
                         onkeyup="this.blur();this.focus()">
</label>

Единственная функция onkeyup="this.blur();this.focus()" — инициировать поток данных после каждого нажатия клавиши, так как в противном случае другие подключённые элементы получат обновленное значение только после действия пользователя (input).


Data Grid


Internet Explorer поставлялся с нативной реализацией data grid, подключенной к указанным выше источникам данных и построенной поверх элемента <table>. Это называлось Tabular Data Control. Для сопоставления полей данных со столбцами таблицы использовались атрибуты datafld, для включения или отключения HTML-кодирования содержащихся данных — атрибут dataformatas, а для обозначения количества записей, которые должна одновременно отображать страница таблицы — атрибут datapagesize. И были ещё методы previousPage, nextPage, firstPage и lastPage для простой навигации по страницам.

<table id="datagrid"
       datasrc="#people"
       datapagesize="10">
  <thead>
    <tr>
      <th>Name</th>
      <th>Email</th>
      <th>Phone</th>
      <th>City</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span datafld="name"></span></td>
      <td><span datafld="email"></span></td>
      <td><span datafld="phone"></span></td>
      <td><span datafld="city"></span></td>
    </tr>
  </tbody>
</table>
<button onclick="datagrid.previousPage()">< previous</button>
<button onclick="datagrid.nextPage()">next ></button>


Событие PropertyChange


Internet Explorer поддерживал интересное событие propertychange, которое можно было присоединить к элементам DOM. Оно запускалось каждый раз, когда программно изменялось одно из его свойств, что могло произойти через setAttribute() или через доступ к свойству объекта. Это позволяло создать наблюдаемые/инструментированные объекты для таких ситуаций, в которых сегодня используется ES6 Proxy. Нужен был только фиктивный элемент DOM с событием propertychange:

<div id="store"></div>

<script>
  function handler() {
    // A magic 'event' variable is passed into
    // the event handler function. When coming
    // from the 'propertychange' event, it comes
    // with a 'propertyName' property.

    if (event.propertyName === 'onpropertychange') {
      // Don't execute right at the beginning on itself
      return;
    }

    alert(
        event.propertyName +
        '\'s value was changed/set to "' +
        store[event.propertyName] +
        '"'
    );
  }

  store.onpropertychange = handler;

  store.test = true;
  store.test = false;
  store.literal = {};
  store.literal = {
    key: 'value2'
  };
</script>

Событие изменения размера элементов DOM


В Internet Explorer было много уникальных событий, но самым интересным из них является событие изменения размера элементов, доступное вплоть до IE 9.

«Событие onresize срабатывает для блочных и встроенных объектов с макетом, даже если изменяются значения свойств документа или CSS».

Это событие похоже на современные Resize Observer и Mutation Observer. Отличие от обычных событий в том, что оно срабатывает асинхронно, как observer.

element.onresize = function(e) {
    /* React to the element's size change */
}

Предварительная загрузка JavaScript


Одной из интересных особенностей Internet Explorer была загрузка и выполнение кода из источников, добавленных через скрипт:

var script = document.createElement('script');
var head = document.getElementsByTagName('head')[0];

script.src = '...';
head.appendChild(script);

Другие браузеры извлекали и выполняли такой скрипт в момент добавления к DOM. У Internet Explorer был более тонкий подход: он разделял оба шага. Загрузка происходила в момент присвоения свойства .src, в то время как выполнение начиналось только после добавления скрипта к DOM. Таким образом, можно предзагружать скрипты, не блокируя основной поток. Для других браузеров подобную функциональность можно было реализовать только более сложным способом, по крайней мере, пока у нас не появились Resource Hints.

Internet Explorer также был первым браузером, который ввёл для скриптов атрибут defer.

Нахождение текущего выполняемого скрипта


В какой-то момент в стандарт HTML5 добавили свойство document.currentScript, которое указывает на выполняемый в данный момент элемент <script>. Зачем это нужно? Например, чтобы прочитать дополнительную конфигурацию, как эта в атрибуте data-main:

<script src="scripts/require.js" data-main="js/main"></script>

Где-то внутри scripts/require.js будет такая строка:

var main = document.currentScript.getAttribute('data-main');

К сожалению, это реализовали только в Edge 12. Мало кто знал, что в Internet Explorer встроен другой механизм, который не только даёт тот же результат, но и лучше работает, если документ всё ещё загружается или полностью интерактивен: свойство скрипта .readyState.

function currentScript() {
  var scripts = document.getElementsByTagName('script');

  for (; i < scripts.length; i++) {
    // If ready state is interactive, return the script tag
    if (scripts[i].readyState === 'interactive') {
      return scripts[i];
    }
  }

  return null;
}

Свойство .readyState удалили в Internet Explorer 11, так что это единственная версия, которая не поддерживает ни .currentScript, ни .readyState (к счастью, гений по имени Адам Миллер нашёл другой способ для полифиллинга).

Так что привело к закату IE?


Глядя на приведённый выше список, я бы сказал, что Microsoft на несколько световых лет опередила всех в разработке инструментов для проектирования сложных и восхитительных веб-сайтов. Некоторые синтаксические конструкции могут показаться нам незнакомыми, но это только потому, что мы к ним не привыкли. В те дни был в моде XML. А помните, что вы почувствовали, когда впервые открыли SVG? Или когда увидели стрелочные функции ES6? Или BEM? JSX? Наверное, у вас были такие же чувства.

Одна из причин, почему не прижились идеи Microsoft, заключалась в том, что мы, разработчики, просто не поняли их. Большинство из нас были любителями и не имели компьютерного образования. Вместо этого мы были так заняты изучением семантической разметки и CSS, что полностью пропустили остальное. На мой взгляд, слишком мало людей в то время достаточно свободно владели JavaScript, не говоря уже об архитектуре сложных приложений на JavaScript, чтобы оценить такие вещи, как компоненты HTML, привязки данных или Default Behavior. Не говоря уже об этих странных островах данных и VML.

Другой причиной могло быть отсутствие платформ для распространения знаний в массы. Интернет всё ещё находился в зачаточном состоянии, не было ни MDN, ни Smashing Magazine, ни Codepen, ни Hackernoon, ни Dev.to, и почти никаких личных блогов со статьями на эти темы. Кроме Webmonkey. Кроме того, ещё не проводились конференции, где разработчики из Microsoft могли бы рассказать об этих инновациях. Не было даже широкополосных интернет-соединений, то есть невозможно было организовать даже видеоконференцию. Всё, что было, это списки рассылки типа A List Apart и IRC-каналы для связи: аналог нынешнего Slack, только без всей мишуры.

Последним гвоздём в крышку гроба стало решение Microsoft после выхода Internet Explorer 6 привязать новые версии Internet Explorer к новым версиям Windows. Поэтому они распустили команду Internet Explorer и интегрировали её в продуктовую группу Windows. К сожалению, следующая версия Windows, преемница Windows XP с кодовым именем Longhorn (позже Windows Vista), серьёзно задержалась. Разработка велась настолько хаотично, что им пришлось даже перезапускать процесс. Это также задержало выпуск нового Internet Explorer и оставило браузер в подвешенном состоянии, без исправления ошибок и улучшения существующих технологий. Когда Microsoft проснулась пять лет спустя, было уже слишком поздно. W3C разработала новые стандарты, а остальные разработчики браузеров не только внедрили их, но и основали рабочую группу WHATWG, которая принесла ещё больше инноваций. Microsoft потеряла техническое лидерство, потеряла свою долю рынка и никогда не оправилась от этого потрясения.


На КДПВ: развалины монумента Болгарской коммунистической партии на пике Бузлуджа в Центральной Болгарии. Фото Натальи Летуновой на Unsplash

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 136

    +12
    Аминь!
    • UFO just landed and posted this here
        0
        Также IE6 не поддерживал полупрозрачные PNG

        Через VML поддерживал, туда и растр можно вставлять, не только вектор.
          0

          Мне тогда эта информация не попалась. Я тогда нашёл только как вкорячить прозрачные пикселы. Но чтобы афльфа-канал — не нашёл.

            0
            Как-то так, проверял сейчас на Win10, сохранив как HTA, оно вроде как раз в режиме IE6 работает:

            <style>
            
            v\:* {
            	behavior:	url(#default#VML)
            }
            
            </style>
            
            <body>
            
            <v:shape style='width:168; height:156'><v:imagedata src='imga.png'/></v:shape>
            
            </body>
            
            • UFO just landed and posted this here
            0

            Вообще он только альфаканал в PNG не поддерживал. Индексную палитру с полупрозрачными цветами – только в путь. Другое дело, что Фотошоп такого не умел, а других инструментов в ту пору особо в ходу и не было...

              0
              Вот, на выходных попробовал – скриншот (214 КБ). Есть артефакты при масштабировании, а если файл оптимизировать с помощью PNGOut и т.п., то может вообще не отображаться, но в принципе альфа есть.
                0

                Я имел в виду вообще без ухищрений, для обычного <img src=...>. Если с ухищрениями получается еще лучше, то вообще супер:)

          +9
          идея ленивой выборки контента в фоновом режиме с помощью JavaScript родилась в команде Exchange / Outlook Web Access

          И как это я в 1997 году в Netscape Navigator 3.0 — делал эту самую «ленивую выборку»? Элементарным фреймсетом, с фреймом нулевой ширины, внутри которого JavaScript. Причем этот трюк я не сам придумал, а нашел на просторах Usenet, он уже в 1997 году был хорошо известен и массово применялся.

          И нет — уже тогда использовать document.write(...) считалось плохой идеей, DOM уже был. Получить новые циферки в виде JSON, расставить их по формочке без перезагрузки страницы — можно было задолго до IE 5.0 (а вот с выставлением disabled/readonly — был некроссплатформенный квест, кстати).

          В отличие от div и CSS, где достижения команды IE очевидны и неоспоримы, хех. Это так — старперское брюзжание, если что...
            0

            Реализация через фреймы засоряла history браузера. В NS4, конечно, был свой чудесный <layer>, который кроме прочего умел асинхронно подгружаться (вроде как)… но в IE4 работа с тогдашним прообразом DOM субъективно и вправду выглядела поприятнее:)

              0

              Это точно. Ума не приложу, почему getElementById() оказалось предпочтительнее all.

                +2
                Реализация через фреймы засоряла history браузера.

                … поэтому приходилось невидимый фрейм никогда не кэшить. Чтобы кнопка «back» не превращала тогдашний «богатый веб» в тыкву :-)

                При этом обвязывание скотчем, чтобы невидимый фрейм мог достучаться до соседа, а также борьба с «ой, оно не докачалось» — была занятным квестом…

                Вот именно поэтому этот трюк — в истории, а ajax — жив до сих пор. Натуральная была инновация, хотя и далекая от «революции». Просто современные евангелисты — родились уже после описанных событий, и плохо знают предшествующую историю, как правило :-)
                  0

                  А ещё реализация через фреймы превращалась в тыкву при открытии ссылок средней кнопкой (что я начал делать начиная с MyIE).

              +5
              почистила множество устаревших путей кода, таких как ActiveX (версия Java-апплетов Microsoft)

              ActiveX — альтернатива Java-апплетам (по крайней мере, в броузере), но никак не «версия».
                +1
                Принято.
                  +4
                  Насколько я помню ActiveX исполнялся напрямую на железе, что создавало массу проблем с безопасностью и загрузка ActiveX компонента с «зараженного» сайта могло доставить кучу неприятностей.
                    0
                    Именно. Кроме безопасности, ещё и очевидные проблемы с кросс-платформенностью.
                    +5
                    ActiveX — альтернатива Java-апплетам

                    Причем очень своеобразная альтернатива, кстати. Апплеты (даже за вычетом танцев с cabarc от микрософт) работали практически везде, умели взаимодействовать с DOM и Javascript, и работало на двадцати с чем-то платформах. В кровавом энтерпрайзе — очень любили эти самые апплеты :-)

                    Я лично на тех апплетах чего только не делал, от безумных формочек кровавого энтерпрайза (сотни фреймов с тысячами контролов), до «безопасного ввода» для банков. Даже как-то заморачивался со слежением за состоянием дом-модели страницы с выставлением крипто-подписей (что на Javascript в то время не делалось никак, ибо нет возможности убедиться в не-скомпрометированности криптографии на pure javascript).

                    А вот ActiveX помогали всего пару раз — и то из-за необходимости взаимодействовать с хитрыми железячными токенами, апи которых было Windows only.

                    Так и не взлетела silver bullet, эти самые ActiveX микрософт очень активно предлагала практически везде, от вижуалбейсика и офиса и аж до веба.
                      +1

                      А я, помнится, даже написал на visual basic dll-ку с подключенным к ней web-документом (или как там эта разновидность модуля называлась), вывалил всё это через FTP на Народ.ру, и эта хрень даже работала в IE!
                      Представляете, чёртова форма с MSForm-овскими кнопочками и полями в окне браузера!

                        0
                        В Дельфях для этого целый фреймворк был, ActiveForms. Входил в VCL, может, и сейчас входит. Именно для того, чтобы виндовую форму показать в веб-странице, и чтобы она при этом работала.
                        +4
                        Очень уж негуманоидная реализация. Такое ощущение, что инопланетяне писали, которые даже не задумывались о том, как это потом должны использовать простые смертные.
                        Вся эта муть с GUID'ами, моникерами, интерфейсами, IDL, подписями и обязательной регистрацией приводила к тому, что даже Hello World в виде ActiveX был настолько громоздким и переусложнённым, что вызывал рвотный рефлекс при изучении кода.
                        Ну или можно было взять Delphi и получить ActiveX в два клика. Только вот весить он тогда будет 300+ Кб, что было абсолютно неюзабельно при тогдашних-то скоростях соединения.
                      +11
                      В одном ТГ канале его автор добавил в подводку к этой статье один из комментов под оригинальной статьёй для большей объективности:

                      For others who weren't aware, «embrace, extend, extinguish» was an explicit strategy discussed internally at Microsoft for gaining control of the internet. Though I think there are real innovations discussed in the article, the portrayal of Microsoft being an altruistic actor trying to get others to adopt their tech is downright dishonest with what we know about their internal discussions of their motivations and strategy at the time.
                        +1

                        Вот я и не понял, в чем состояли инновации. Дать миру проприетарную технологию?

                        +2
                        Давно нужно было отказаться от IE.
                          0

                          Это вы зря)) Было время когда я радовался как ребенок когда в Ослике табы появились. Открывать 30 окон браузера в эпоху заката Нетскейпа было забавно.
                          Возможно в следующем цикле развития запилят что-то свое прорывное долгоиграющее.

                            +1

                            А я не заметил, как в нём появились табы. Я тогда на MyIE сидел.

                              +4
                              IE7 же

                              но это надо было богатырское терпение иметь чтобы просидеть на чистой 6-ке до момента когда вышла семерка с табами… при том что уже существовала Opera, mozilla suite, FFox да и сам нетшкаф ещё был жив
                                0

                                Так я на ней и не сидел. Я на MyIE перешёл практически одновременно с появлением у меня интернета — в 2005 году. В винде тогда по дефолту стояла IE 5.5, её обновляли до IE 6, чтобы MyIE движок подхватил.
                                А что дальше было с IE — меня не интересовало, пока не стал JS-разработчиком.

                                  0

                                  Это не богатырское терпение, это скудность источников, откуда можно почерпнуть свежую информацию. Тогда в далеких 2003-2004 году, после того как всучили pci-модем с диском с дровами и утилитами, на диске обнаружился нетскейп, который благополучно обновился и показал красоту вселенной Интернет. Там и табы, и Aol messenger и куча других непонятных утилит.
                                  С 8 версии нетскейпа стал медленно переползать на огнлис и посматривать что будет с Осликом.

                                    +2

                                    А ещё нам было стрёмно ходить на майкрософт с левой винды. Вдруг что случится и винда про регистрацию вспомнит? :)))

                                +1
                                Чем не табы? =)
                                image
                                Когда я перешёл на Firefox, то специально ставил TabMixPlus, чтобы вкладки в много строк делать.
                                image
                                (На самом деле табы были ограничены тремя строчками и прокручивались вертикально, это я просто для скриншота ограничение по высоте снял.)
                                  0
                                  ограничены тремя строчками

                                  У меня в MyIE, минимальный размер ярлычка таба вмещал только иконку. В трёх строчках умещалось более 300 табов.

                                    0
                                    Можно было и так настроить, но первые буквы заголовка иногда помогали ориентироваться. Я потом минимальный размер таба специально делал побольше, чтобы больше текста влазило.
                                      0

                                      У меня такое количество вкладок образовывалось только в режиме "очереди вкладок". Это когда я просматриваю вкладки по порядку, закрывая их после просмотра. При настройке "новая вкладка — последняя" — получается самая настоящая очередь.

                                      0
                                      более 300 табов.

                                      Круто, но зачем!?

                                        0

                                        Очередь табов.
                                        Открываешь форум, а там овердофига тем обновилось. Тыкаешь средней кнопкой по обновлённым разделам. Нажимаешь Ctrl+W. Активной становится вкладка первого в порядке открытия раздела. Тыкаешь средней кнопкой по обновлённым темам, а может быть — страницам обновлённых тем, чтобы потом не листать. Закончив работать с каждой вкладкой — нажимаешь Ctrl+W.
                                        На форуме так получается несколько десятков вкладок в очереди.


                                        Если же надо просмотреть сайт с большим количеством малоинформативной хрени, то очередь может разрастись и до первых сотен.

                                      +2
                                      Эхх, а ведь сейчас такое количество вкладок на машине с 16 ГБ ОЗУ не открыть.
                                        0
                                        Да, на первом скриншоте машина с 192МБ оперативы, на втором скриншоте машина с 512МБ оперативы. Работало при этом нормально.

                                        Впрочем, у меня и сейчас в Firefox с 16ГБ оперативы и SSD нормально всё работает при большом числе вкладок. Привычка открывать кучу страниц никуда не делась =)
                                          0
                                          к концу рабочего дня в фаервоксе под сотню кладок октрытых — и они без проблем уживаются в 16ГБ оперативы с двумя экземплярами идеии, проект одной из которых собирается в 160-мегабайтный джарник
                                          Так что Ваше заявление явно является «исключением из правила»
                                        0
                                        О Боги! Ослик всегда был ущербным и использовался только единажды после установки ОСи: чтобы скачать нормальный браузер. А когда (не помню как назывался антивирус) стал в себе содержать установщик (вроде хрома), то ослик вообще больше не трогался — инталлятор антивируса приносился на флешке.
                                        Я ни от одного фронтэндщика (вживую) не слышал (а я общался с парой дюжин этих бойцов видимого фронта) хороших слов про ослика — он как и ВиндовсМобайл (которая на виндофоны ставилась): все с нетерпением ждали когда же оно помрёт.
                                          +1
                                          все с нетерпением ждали когда же оно помрёт.

                                          да ладно ослик, вендекапец/мастдай же ;)

                                          но собственно браузером с таким кошмаром стал только в 6 версии когда заморозился в развитии… а до этого вариантов и полноценной замены то особо и не было… с точки зрения относительности это в нетшкафе чтото работало неправильно, а не в ослике… что шкаф и погубило
                                            0
                                            >чтобы скачать
                                            >на флешке
                                            да вы мажор однако :)
                                            ну или весьма молоды.

                                            Собственно, и апдейта самого ИЕ(да и вообще всего ПО того времени) долго не было, по большей то части, из-за эпохи.

                                            Это сейчас каждая кофеварка сидит в инетике и строчит в свой бложик с фоточками в 4К, а после установки %почти_любая_очень_нужная_фигня% считается вполне естественным, что ей будет еще норм так докачать гига 2-3 за несколько минут.

                                            А теперь вернемся в те времена и вспомним, что скачать песенку в средне-хреновеньком битрейте это так с полчасика-час, а инсталляшку винды можно ждать пару веков :)))
                                              +2
                                              Если сервер умел докачку файлов, если погода была нелетной, если на АТС звезды совпадали, если модем был внешний «зухель», если он не подвиснет ни разу и не перегреется — то за сутки модемом можно было вытащить под гигабайт всякого полезного…

                                              — Как кота назвал?
                                              — Зухель!
                                              — Почему?
                                              — Смотри. — тычет в кота веником, кот в ответ — «Шшшшш!»
                                              — А, понял, коннект на 28 800!!!

                                              :-)
                                                0
                                                Какой ещё гигабайт в сутки на диалапе? 4 килобайта в секунду (на 56K). Простые вычисления показывают, что это не больше 340 мегабайт за сутки. Но держать столько линию занятой не представлялось возможным — дорого, и кто-то наверняка захотел бы поговорить по телефону.
                                                  0
                                                  В Москве на МТУ-Информ были тарифные планы выходные дни в одной неделе за 5 уе. Один weekend c 9.30 субботы до 9.30 понедельника, всего за 150 рублей. При хорошем раскладе можно было скачать один ISO-образ.
                                                  Ночные тарифы были по 0,20уе до 9.30 утра. Как раз перед школой в ICQ народ сидел.
                                                  Под конец эпохи диалапа, некоторые провайдеры внедрили сжатие, и бывали моменты, когда скорость скачки могла превышать пресловутые 56K при просмотре веб-страниц. Не помню точно, провайдер точка назывался, красные карточки, у него почему-то 5 уе можно было купить за 130-140 рублей, тогда доллар упал где-то до 24 рублей.
                                                    +1
                                                    А, точно — это везение было за все выходные, в пятницу вечером поставил — в понедельник утром как раз доехало. Как легко догадаться — это был дамп одной БД :-)
                                          +15

                                          Надо понимать, что помимо инноваций (разной степени нужности) там еще было полно глюков, багов и тормозов. Вспомнить хотя бы трюки с внутренним свойством hasLayout, которое "волшебным" образом чинило некоторые приколы. Скоростью и стабильностью работы IE никогда не отличался, частенько крашился при использовании инструментов отладки (которые тоже появились сильно позже, чем у остальных).


                                          А самое веселое наступило где-то на версии, ЕМНИП, 10, когда условные комментарии типа <!--[if IE 6]> перестали работать, а браузер все еще был глючный и доля рынка у него еще была заметная. К счастью где-то тогда Chrome стал его побеждать.


                                          Так что были, были объективные причины, почему этими инновациями в IE никто не пользовался или пользовался исключительно чтобы обходить глюки самого IE.

                                            +1
                                            трюки с внутренним свойством hasLayout, которое "волшебным" образом чинило некоторые приколы.

                                            Свято место пусто не бывает: разве мало сейчас приколов, которые чинятся выносом на отдельный композитный слой через трюки с will-change: transform, transform: translateZ(0) и подобные? :)

                                              0

                                              Это, насколько я помню, для производительности, и работает во всех браузерах.

                                                0

                                                По сути это такой же хак внутренних механизмов рендеринга ради побочных эффектов (производительность этим можно как улучшить, так и ухудшить, если насоздавать таких слоев слишком много). И работает это во всех браузерах слегка по-разному (везде свои эвристики).

                                                  0

                                                  Я согласен что это, в общем, тоже ректальная тонзиллэктомия, но все-таки если этого не сделать, никто не умрет. А вот IE иногда такое рендерил, что можно было и инфаркт получить.

                                                    0

                                                    Тоже случается всякое. То картинки при скролле плывут и колбасятся, то еще что-то этакое… С другой стороны, и c hasLayout в IE случались приколы типа "обнуления" нумерованных списков, и со слоями бывали занятные артефакты рендеринга шрифтов (не говоря уж о плясках z-index-ов, хоть они и часть стандарта)… В общем, как по мне, вполне достойная замена:)

                                                      0

                                                      Может быть, я уже несколько лет не верстаю.

                                            +3
                                            Не знаю как там было раньше, но последних 5 лет от IE была только головная боль.
                                            И я, как веб-разработчик, истинно рад что он наконец умер.
                                              +5
                                              От этого больше всего пострадает Firefox, так как у разработчиков всё меньше мотивации задумываться о кроссбраузерности и стандартах.

                                              Например, Chrome много лет поддерживал в WebRTC т.н. Plan B, а не Unified Plan, который был выбран в качестве финального стандарта. В 2018 году добавили поддержку Unified Plan, но так как на старое поведение уже полагается множество сайтов, Plan B тоже до сих пор поддерживается и его поддержку явно не скоро удалят, так как по собранной статистике, оно всё ещё активно используется, хоть и несовместимо с Firefox («что работает в Chrome, то и стандарт»). Вот у Mozilla и проблема — пилить ли Plan B просто для совместимости с Chrome-only кодом, или придерживаться принятых стандартов?

                                              Чем-то напоминает времена, когда множество сайтов были IE-only.
                                              +4
                                              Всё хорошо, только с выводами не очень. Имхо главной проблемой IE был Windows как таковой и как только появилась «отвязанная» (даже не говорю кроссплатформенная, это не так и важно на самом деле) от жизненного цикла коробочной винды альтернатива — её с энтузиазмом приняли.
                                                +5
                                                главной проблемой IE был Windows как таковой

                                                Причем не только Windows в смысле NT, но и в смысле Phone/Mobile :-)

                                                Увы, но все эти «забытые красоты» из статьи — они интересны именно как палеонтология и не более того. За парой исключений типа meta http-equiv, разве что.

                                                Не, это круто — сделать переход между страницами с эффектом, выставив всего пару атрибутов, но полезность — это как подключить ветхозаветный скрипт, в котором по странице за курсором мыши бегает котенок. Прикольно но бесполезно. :-)

                                                Точно так же, умение заполнить табличку из отдельного CSV — непрактично и бесполезно. Уже лет пятнадцать назад нужно было совсем другое — чтобы готовый компонент а-ля jQuery DataTable умел из кучки tr/td делать нормальный грид, со скроллингом, пейджингом, поиском и фильтрацией. Хотя бы клиентской, а в идеале — с подкачкой с сервера. Про «сегодня» я вообще молчу — тут еще надо чтобы это было частью Angular/React/Vue или хотя бы кошерным компонентом на ES6/TypeScript…

                                                Анекдот с document.currentScript вообще в «достоинства» записали, хотя это классическая misfeature. «Весь взвод шагает не в ногу» (С)…
                                                  +1

                                                  На самом деле проблема была в том, что IE не обновлялся практически никогда.
                                                  Каждая версия была на эпоху. Первый год, как она вышла, ей более-менее можно пользоваться, но потом она настолько отставала от прочих браузеров, что вызывала законные проклятия разработчиков.

                                                    +5
                                                    проблема была в том, что IE не обновлялся практически никогда

                                                    Хех, сафари тоже так обновляется, и ничего — жив… беда нашего «ослика» была не в том, что он плохо обновлялся, а в том что он в своих редких обновлениях не предоставлял нужного разработчикам функционала (хотя казалось бы — если какую мелкую фишечку может сделать десяток разработчиков, то повторить его в крупной корпорации вообще раз плюнуть, тем более сырцы есть!).

                                                    Причем нельзя сказать что там требовались такие уж феерические ресурсы, на уже упомянутый document.currentScript вообще почти ничего не надо. Такие мелочи упрощают жизнь, уменьшают таскаемые с собой полифиллы, и тем самым являются важным фактором при выборе «что поддерживаем».

                                                    Но — снобизм («мы были первыми и таковыми всегда будем»), и следование своей стратегии «трех Е» при отсутствии как раз киллер-фич со своим embrace — привели к закономерному результату…
                                                +1
                                                Читал статью, и думал, упомянет ли автор XML Islands, думаю, если не вспомнит, то надо будет вставить ехидную ремарку, что мол, да, еще и это потом переизобрели сначала в виде Knockout.js, а потом и в Angular, со своим синтаксисом и со своими мнемониками вроде «double-way data binding looks like hamburger in a box: [(model)]

                                                Ну а про вот эту историю сам Дуглас Крокфорд рассказывал в какой-то из статей, что инженеры из MS среверсили первую реализацию JS из Netscape, и встроили практически ее зеркальную копию в IE в 1999-м году, а что можно на этой платформе сделать AJAX, до широкой общественности дошло, считается, в 2005-2006 годах, когда программная статья Джесси Джеймса Гарретта стала просачиваться в массы.

                                                С другой стороны, хотя инженерно это все было сделано на высоком уровне, но имело встроенный недостаток: нормально работало только на платформе MS, то есть на Windows. Наверное, поэтому всему коммьюнити этот вендор-лок надоел, и решили все переписать заново на основе открытых стандартов, что мы сейчас и наблюдаем.

                                                Лучше стало или хуже, пока неясно.
                                                  0

                                                  Простите, а какая связь между XML Islands и Knockout.js или Angular?

                                                    0
                                                    КМК, решается похожая задача — сделать data binding, то есть привязать поле ввода на форме к полю данных в модели. Конечно, в JS-фреймворках еще очень много всего есть, кроме этого.
                                                      0

                                                      Так там привязка делается не к модели, а к какому-то источнику данных в лучшем случае; именно модели как таковой вообще нет.


                                                      И ключевое отличие того, что было в IE, от того, что есть сейчас — именно в этом.

                                                  +8
                                                  Одна из причин, почему не прижились идеи Microsoft, заключалась в том, что мы, разработчики, просто не поняли их.

                                                  Причина была в том, что все эти инновации были гвоздями прибиты к одной программе на одной платформе, густо обложены патентами Microsoft и закрыты на вендор-лок. Embrace-Extend-Extinguish.


                                                  Я бы не сказал, что разработчики тогда не использовали эти идеи. В былые времена сайты с плашкой вида "работает только в Internet Explorer© версии 5.1" встречались достаточно часто, и очень раздражали пользователей более быстрых и удобных браузеров и не Windows ОС.

                                                    +4
                                                    все эти инновации были гвоздями прибиты к одной программе на одной платформе

                                                    … да и перечисленные в статье инновации — это так себе идея.

                                                    То что было действительно важно (тот же CSS) — было внедрено везде, и потом получило бурное развитие.

                                                    А вот к примеру behaviors — крайне узкое нишевое решение, зачем-то понадобившееся самой микрософт, и потому и не взлетело.
                                                      +1
                                                      Всё же, на 2000 год более быстрых и удобных браузеров ещё не было. Я где-то в 2003 пересел на Mozilla Suite, но он был заметно менее поворотливым, очень долго загружался (даже splash screen показывал несколько секунд). Оно и не удивительно, ведь это было что-то вроде современного Electron, где весь интерфейс был чем-то вроде веб-странички с JavaScript внутри. Вышедший позднее Firefox грузился быстрее, но всё равно заметно отставал от IE. Подкупало наличие вкладок, расширения, и способность рендерить частично загруженный <table> до того как пришёл закрывающий </table>, что на диалапе было киллер-фичей, особенно если вспомнить, что все сайты в те времена были свёрстаны таблицами. Впрочем, от этой фичи потом отказались.
                                                        +3
                                                        Причина была в том, что все эти инновации были гвоздями прибиты к одной программе на одной платформе, густо обложены патентами Microsoft и закрыты на вендор-лок.

                                                        И что? Вот какое это вообще имеет отношение к конечному пользователю? Обычный человек и слов-то таких не знает: какие патенты, какой вендор-лок, о чём речь вообше?
                                                        Никто никогда запуская браузер/заводя автомобиль/надевая джинсы не мучает себя вопросами «а сколько там патентов и нет ли вендор-лока».

                                                        очень раздражали пользователей более быстрых и удобных браузеров и не Windows ОС


                                                        Ох уж эти легенды… В 1999-м году из «более быстрых и удобных браузеров» была только глючная и платная Опера, а на «не Windows ОС» сидело два половиной линуксоида.

                                                        IE «мочили» всем миром, начиная от идиотских судов по запрету броузера по умолчанию(довольно забавно сегодня наблюдать, как Google в той же самой ситуации рассказыает, что ну это же совсем другое дело и без прибитых гвоздями сервисов от гугла андроид ну никак не может) и заканчивая агрессивной рекламой вплоть до «а давайте мы вместе с флеш-плеером вам незаметно хром поставим».
                                                        Попробуйте даже сейчас любопытства ради зайти Edge-м на google/gmail/youtube и прочие сервисы от гугла: задоколебётесь закрывать попапы «о боже, немедленно скачайте Chrome!»
                                                          +1
                                                          Обычный человек и слов-то таких не знает: какие патенты, какой вендор-лок, о чём речь вообше?

                                                          Это имеет отношение не к обычному пользователю, а к программисту, выбирающему платформу для реализации приложения. И вот платформа "веб с использованием расширений от IE" работала только на Windows и практически перестала развиваться после выхода Windows XP + IE 6.0 в 2001.


                                                          а на «не Windows ОС» сидело два половиной линуксоида

                                                          А что насчёт поклонников Apple?


                                                          В 1999-м… глючная и платная Опера

                                                          В 1999 у меня и компьютера-то не было, а вот в 2004 на дохлом dial-up соединении нормально работать можно было только в Opera, включая картинки только при первом посещении сайта, а потом переключая обратно на "показывать только кешированные". В IE работать было просто невозможно. Платность Opera заключалась в рекламном баннере, который по-моему убирался кряком(нехорошо, но тогда все программы ставились так, покупать софт было не принято, да и денег на это не было).

                                                            +3
                                                            А что насчёт поклонников Apple?

                                                            в то время основным браузером apple был… тадааа Internet Explorer! ну и вообще был переход на macosx с кучей собственных проблем и браузеры при тогдашнем интернете были не самым основным злом, да и самим эпплом полтора человека пользовались (по сравнению с нынешними временами) как домашним компом
                                                            +2
                                                            Причина была в том, что все эти инновации были гвоздями прибиты к одной программе
                                                            Вот какое это вообще имеет отношение к конечному пользователю? какие патенты, какой вендор-лок, о чём речь вообще?

                                                            Не поверите, непосредственное. Пользователь пользуется тем, что ему дадут разработчики, внезапно. А разработчикам важно и патенты и локи и лицензии, просто в силу того что к ним это все в виде орды адвокатов и прилетит, если что не так.

                                                            Поэтому в случае «взять вон тот плохой, убогий и глючный опенсорц с жирным коммунити или вот эту убервафлю с мутной перспективой» выбор как правило очевиден. Причем не только в плане прямого использования, но даже изучения.

                                                            А юзеры, получившие что-то бесплатно… это просто статистика.

                                                            а на «не Windows ОС» сидело два половиной линуксоида.

                                                            … поэтому авторы нетшкафа просто так упарывались, поддерживая 23 (двадцать три) платформы одновременно, ага. (голосом Задорнова) ну тупыыыееее....

                                                            IE «мочили» всем миром, начиная от идиотских судов

                                                            Сколько там нетшкаф стоил за копию, $79? А ослик шел «в подарок», ага. «Какой такой демпинг, не было ничего» (С)

                                                            Попробуйте даже сейчас любопытства ради зайти Edge-м на google/gmail/youtube

                                                            А уж на те корпоративные поделия, которые я последние 10 лет клепаю, вообще бессмысленно заходить, сразу хром скачивается. Неужели это потому, что я хейтер микрософт? Или может потому, что современные фреймворки в оном IE/Edge неработоспособны, в силу древности платформы, а миллион полифиллов превращает их в финский анекдот?

                                                            Телега впереди лошади она конечно прикольно выглядит, но ездить даже за пивом на такой конструкции несколько трудновато, кмк.
                                                              0
                                                              «Какой такой демпинг, не было ничего»

                                                              Ну, вот тут я не согласен. IE — часть винды. Тогда уж надо цену винды смотреть.

                                                                0
                                                                Ну какая это «часть винды», если тот же иксплойтер версий 5, 5.5 и 6 — у меня работал под маком (родной)? Более того, под маком оный «ослик» был нужен микрософт офису, поэтому и появился. Может это часть офиса, а не окошек? :-)

                                                                А если это часть офиса — то вот вам и нечестная конкуренция, один платный продукт выбивает второй платный, благоодаря раздаче одного из компонентов «бесплатно, то есть — даром»…

                                                                Это с медиаплеером дурь несусветная была, а вот с браузером — «не все так однозначно» (с)
                                                                  0

                                                                  Нет, именно окошек. Офис — отдельно ставился.
                                                                  В винде IE нужен примерно для всего. Вплоть до отображения фоновых рисунков в окнах папок.


                                                                  Ну, можно ещё рассматривать его как библиотеку, зависимости от которой у мелкомягких во всём.
                                                                  Никого же не смущает, что программы тащат с собой редист общих библиотек?

                                                                    +1
                                                                    Ну какая это «часть винды»

                                                                    самая натуральная, начиная с 98 винды рабочий стол и окна проводника были куском браузера. а программа iexplorer была лишь оболочкой с кнопками для mshtml на базе которой половина gui работала

                                                                    (как в ie работал в маке, не знаю, у меня мака тогда не было, а сейчас ие в маке нет)
                                                                      0

                                                                      Кстати говоря, если в ХР, в поле адреса окна папки вбить URL сайта, то окно папки превращается в окно IE. Причём, за меньшее время, чем необходимо для открытия окна IE двойным кликом по ярлыку.

                                                                        0
                                                                        Гораздо полезнее, что если вбить путь к папке — то оно превращается в Windows NT Explorer :-)
                                                                        0
                                                                        Я сейчас страшную вещь скажу — у микрософта уже много лет есть вполне себе редакции «окошек» без любимого ослика, и небеса на землю не упали.

                                                                        Да-да, я про тот самый трэш, который Windows Core. Те кому нужен именно общий компонент — с собой его и несут, и все (причем теперь — несут с собой WebKit, ибо он куда как удобнее и не требует выноса мозга с деталями инкорпорирования COM в свое приложение).

                                                                        И напомню, первоначально те самые красоты с «фоном в папке» — и были отдельным продуктом под названием Microsoft Plus.

                                                                        Но если два продукта забандлить в общий инсталлятор, это же не значит — что оно теперь неделимо… Например возьмем мою гуевую мелкую тулу на жаве и JRE вместе соединим — что, теперь JRE от моего поделия неотделима? Хехе.

                                                                        Так что я почему-то не удивлен, что эти трюкачества вдруг не произвели нужного впечатления на евробюрократов. И вдруг оказалось можно не только соединить — но и разъединить обратно, хех.
                                                                          0
                                                                          Я сейчас страшную вещь скажу — у микрософта уже много лет есть вполне себе редакции «окошек» без любимого ослика, и небеса на землю не упали.

                                                                          Ну да. Эти "много лет" начались когда закончилась эпоха ХР.
                                                                          Теперь в винде свой отдельный движок Trident — для винды, а IE устанавливается отдельно и тащит собственный экземпляр движка.


                                                                          Причём, это не мешает открыть Visual Studio и нарисовать свою оболочку над встроенным ActiveX, получив примитивный, но работающий браузер.

                                                                            +1
                                                                            Вот в этом и ошибку вижу я.

                                                                            Видите ли, в те далекие времена — окошки делали очень умные люди и extensibility было для них ммм… key principle.

                                                                            То есть — вид интерфейса и детали поведения были изначально pluggable. Из этого могучего замаха — очень многое давно документировано, активно использовалось, успело стать deprecated, часть кода была переписана (неоднократно) на новые платформы (тот же .NET), но базовый набор интерфейсов — он все еще с нами и все тот же.

                                                                            Микрософт стала от него отказываться только в Windows 8+ — и когда этот процесс переписывания завершится не знает никто.

                                                                            Я зачем об этом напоминаю?

                                                                            Да потому что «активные папки» Windows 95OSR2 к этим интерфейсам предоставляли ровно две оболочки — одна классическое WinAPI, а вторая — рендерила то же самое в виде динамически сгенерированного HTML.

                                                                            Всего лишь.

                                                                            Поэтому мне очень странны крики «оно неотделимо». Sorry what? Альтернативный контейнер ком объектов — без проблем выкидывается из инсталляции, переносится в отдельный продукт (как это и было изначально), и… ничего не меняется.

                                                                            Что еще более психоделично, сама оболочка — это тоже COM, тоже имплементирующий свой набор интерфейсов. То есть — таких активных десктопов сразу задумывалось более одного.

                                                                            А при попытке активировать в опциях активные папки — юзер увидит сообщение «не найден ком объект с таким-то гуидом». Что нам и показывает то самое «неотделимое» место — CoCreateInstance() с гуидом из реестра.

                                                                            А послушать евангелистов микрософт — так там все подряд захардкодано вусмерть, пол-винды непрерывно проверяет на гвоздями вбитый минорный номер билда эксплойтера, «как бы чего не вышло». Хех.
                                                                              +1
                                                                              Поэтому мне очень странны крики «оно неотделимо». Sorry what? Альтернативный контейнер ком объектов — без проблем выкидывается из инсталляции, переносится в отдельный продукт (как это и было изначально), и… ничего не меняется.

                                                                              тут мы можем запросто сместится в спор:

                                                                              если из винды выкинуть explorer — она продолжит работать, может файловый менеджер это не часть ос?
                                                                              если из винды выкинуть 32х битные драйвера (речь о 9x) — она продолжит работать — они не часть ОС?
                                                                              так можно продолжать до тех пор пока не останется kernel32+user32+gdi32 и типа — это и есть винда, а остальное всё сторонний и ненужный софт (а то и вообще вернемся к досу и холивару что винда это оболочка для него)

                                                                              Однако, винда это целиковый продукт 'изкоробки', также как автомобиль. Если у автомобиля снять двери — он останется автомобилем, но это не значит что двери это не часть автомобиля
                                                                                0
                                                                                Если у автомобиля снять двери — он останется автомобилем, но это не значит что двери это не часть автомобиля

                                                                                (весело подмигивает) неотделимая? :-)

                                                                                если из винды выкинуть explorer — она продолжит работать, может файловый менеджер это не часть ос?

                                                                                С учетом засилия альтернатив аж до появления висты — нет, и даже не является обязательной.

                                                                                Если быть совсем перфекционистом — то придется предложить альтернативную реализацию shell api, чтобы никто не заметил подмену, но это-то как раз технически возможно. А можно им не быть, назвать полученное Windows Core, и сделать вид что так и надо. Ну нету у вас больше SHBrowseForFolder, это фича!

                                                                                Кстати, тут микрософт открыла предка explorer — который WinFile, он тоже когда-то был «неотъемлемой частью виндоусь» :-)

                                                                                если из винды выкинуть 32х битные драйвера (речь о 9x) — она продолжит работать — они не часть ОС?

                                                                                О-ла-ла, кто-то хочет вспомнить, что 32битный доступ к диску и файлам у Windows95 был опцией? :-)

                                                                                Однако, винда это целиковый продукт 'изкоробки', также как автомобиль.

                                                                                Дайте угадаю, вы ездите на форде черного цвета, как завещал сам Г. Форд, и черный цвет — неотделим от форда? :-)

                                                                                  0
                                                                                  (весело подмигивает) неотделимая? :-)

                                                                                  отделимая, но нарушающая его функции и, в зависимости от точки зрения, иногда очень фундаментально
                                                                                  Это важно

                                                                                  С учетом засилия альтернатив аж до появления висты — нет, и даже не является обязательной.

                                                                                  Кстати, тут микрософт открыла предка explorer — который WinFile, он тоже когда-то был «неотъемлемой частью виндоусь» :-)

                                                                                  филосовский вопрос, shell в юникс системе — необходимая и неотъемлемая часть ОС?… глядя на встраиваемые системы и какойнить андройд можно сказать что не-необходимая, однако это без него это будет полноценной ОС? тут как с дверями у авто… никто не требует чтобы двери были легко заменяемыми и не задумывается о том что надо иметь возможность всегда от них отказаться.

                                                                                  О-ла-ла, кто-то хочет вспомнить, что 32битный доступ к диску и файлам у Windows95 был опцией? :-)

                                                                                  скорее основной ф-цией, а вот 16-битный доступ был аварийным режимом… это не значит что 32х битный режим можно выпилить и считать что это норма

                                                                                  Дайте угадаю, вы ездите на форде черного цвета, как завещал сам Г. Форд, и черный цвет — неотделим от форда? :-)

                                                                                  ну я например не могу поменять двигатель, кпп, двери, врутреннюю отделку, фары и т.п. на детали от другого автомобиля, ни технически, ни зачастую юридически (в некоторых странах)
                                                                                    +1
                                                                                    отделимая, но нарушающая его функции

                                                                                    Вот именно. Точно так же и иксплойтер — отделим, ну — там кое-что отвалится по мелочи… придется вендорам к рантайму вижуалстудии и директ-хы на диск еще и иксплойтер класть, вот и все…

                                                                                    shell в юникс системе — необходимая и неотъемлемая часть ОС?

                                                                                    Какой из десятка только основных? Вот у меня прямо сейчас стоят Борн bash, Корн ksh, Си csh, ТиСи tcsh, Ахо ash, Зю zsh…

                                                                                    А еще есть перл-шелл, жава-шелл, питон-шелл и даже tclsh. А еще в /usr/bin я нашел lksh, rksh, ptksh, vtysh, wish, ypchsh, ipmish, mosh и даже icesh.

                                                                                    Вам какой нужен? :-)

                                                                                    ну я например не могу поменять двигатель, кпп, двери, врутреннюю отделку, фары и т.п. на детали от другого автомобиля

                                                                                    Почему же не можете, очень даже. Моддерские конторы так и работают. Поставить в «горбатый» запорожец турбированный V6 от фольксвагена — и наслаждайтесь себе.

                                                                                    Другое дело что для выезда на дороги общего пользования во многих странах придется проходить сертификацию, но к технической возможности это не имеет особого отношения.
                                                                                      +1
                                                                                      Какой из десятка только основных?

                                                                                      тот который 'изкоробки' идет.
                                                                                      вам полюбому нужен шелл, в котором будут запускаться скрипты инициализации и он будет использоваться полюбому до того момента как вы начнете чтото там выбирать. вы не можете взять ОС без шелла, загрузится в ней и выбрать удобный. разве что собрать образ вручную в другой ОС и таким образом сделать рабочую версию с нужным вам шеллом
                                                                                      ====
                                                                                      вообще для интереса по поводу неотделимости, попробуйте в десктопной lts убунте обновить системный python до последней версии, не прибегая к адским шаманствам и не уронив штатный gui намертво… хотя казалось бы как питон может быть частью ОС… хотя в линуксе gui не часть ОС… опять казуистика

                                                                                      Почему же не можете, очень даже. Моддерские конторы так и работают. Поставить в «горбатый» запорожец турбированный V6 от фольксвагена — и наслаждайтесь себе.

                                                                                      Это не штатные доработки, распилить попалам горбатого запорожца и поставить внутри двигатель от тепловоза — это не значит что 'мы штатно поменяли двигатель в запорожце'… это будет скорее — мы на двигатель тепловоза повесили кусок железа который когдато был частью запорожца… и всё это мы поставили на колесики от тачки

                                                                                      но к технической возможности это не имеет особого отношения.

                                                                                      технически двигатель V6 в запорожец не влезет, а после «тюнинга» — это уже будет не запорожец, а кузов внешне напоминающий запорожец

                                                                                      ===
                                                                                      Если взять мерседес clr и менять по одной детали с мерседесовской на детали от ГАЗ-21, в какой момент итоговое авто станет волгой?
                                                                                        0

                                                                                        Так в разных дистрибутивах разный шелл 'изкоробки' идет.


                                                                                        А ещё ничего не мешает (в теории) выбрать шелл при установке ОС.

                                                                                          +1
                                                                                          А ещё ничего не мешает (в теории) выбрать шелл при установке ОС.

                                                                                          а от него можно отказаться, он же ненужная и опциональная часть ОС?

                                                                                          потом всёравно под капотом на этапе загрузки будет использоваться какойнить базовый sh с учетом которого написаны скрипты инициализации… и лишь в вашей сессии будет запускаться любимый bash/zsh и т.п.
                                                                                            +1

                                                                                            Для инициализации systemd есть, он и без скриптов умеет работать. А пользовательский консольный сеанс тоже в некотором смысле необязателен...

                                                                                          0
                                                                                          Какой из десятка только основных?

                                                                                          тот который 'изкоробки' идет.

                                                                                          Они все из коробки. Сразу.

                                                                                          Более того — при начальной инсталляции очень непросто НЕ поставить скажем си-шелл (не заменить альтернативой, а именно вообще ничего из этого семейства не поставить), так чтобы пол-системы не сломать.

                                                                                          Потому что на вкус и цвет — все фломастеры разные, и никого не смущает — что один разработчик любит си-шелл, второй — лепит расширениями борна, а третий канонично выпиливает лобзиком «как в 1972 году». А четвертый решительно пишет скрипт на питоне, потому что ему так больше нравится.

                                                                                          Это же не мак или окошки, тут нет «единственно правильного пути в нирвану», хех…
                                                                                            0
                                                                                            Это не штатные доработки, распилить пополам горбатого запорожца и поставить внутри двигатель от тепловоза — это не значит что 'мы штатно поменяли двигатель в запорожце'…

                                                                                            (ехиднейше) а вам шашечки или ехать? :-)

                                                                                            Куча контор делает суровый моддинг, потом проходит сертификацию их изделий, и владельцы этих «паровозов» — штатно катаются по дорогам. Я даже встречал авто на паровых (!) двигателях, так что про паровоз — это не фигура речи.

                                                                                            Кстати, даже в СССР была такая чудесная передача «это вы можете», там со всех концов советской родины автолюбители приезжали на самосборных автодевайсах (своим ходом), тоже — представьте себе, была «техническая возможность».

                                                                                            Хех.

                                                                                            Я к чему? Не надо путать «возможность» и «желание». Возможность как запихнуть иксплойтер в потроха, так и вынуть его оттуда — у микрософта а) была и б) весь путь «туда и обратно» был пройден.

                                                                                            Вот с желанием — да, очень не желали, ну так животворящие штрафы им помогли перестать прокрастинировать :-)
                                                                                              0
                                                                                              (ехиднейше) а вам шашечки или ехать? :-)

                                                                                              но итоговая конструкция не будет запорожцем же,
                                                                                              я могу в гараже авто с нуля собрать точно также из запчастей мерседеса, и прицепить шильдик мерседеса — мерседесом оно не станет

                                                                                              тоже — представьте себе, была «техническая возможность».

                                                                                              собирать автомобили с нуля или штатно менять детали своего автомобиля и получать 'мерседес с двигателем от истребителя'?

                                                                                              спор же об этом. или вы делаете самоделку или штатно тюните существующее авто.
                                                                                              Свап v6 в запорожец — это самоделка на базе кузова, а замена двигателя 2105 на 2103 в жигулях-пятерке — это практически штатная возможность
                                                                                                0
                                                                                                Вот с желанием — да, очень не желали

                                                                                                Всё равно не понимаю. В Винде из коробки должна быть утилита для того, чтобы зайти на сайт и скачать браузер.


                                                                                                Делать десять сборок винды с десятью разными браузерами — это чесание левой пяткой за правым ухом.

                                                                                                  0
                                                                                                  В Винде из коробки должна быть утилита для того, чтобы зайти на сайт и скачать браузер.

                                                                                                  вы еще не забывайте что в те староглинянные времена, откуда выросла 98-XP, интернет был далеко не у всех. а вот браузер бывало что требовался многим (и частенько на дисках с какойнить энциклопедией, шел нетшкаф или дистриб IE4/5)
                                                                                                    0
                                                                                                    Так ведь и закончилось анекдотом — баннером со списком «что хотите скачать» :-)

                                                                                                    Ох уж эта бюрократия, бессмысленная и беспощадная…
                                                                                    0
                                                                                    Я сейчас страшную вещь скажу — у микрософта уже много лет есть вполне себе редакции «окошек» без любимого ослика, и небеса на землю не упали.


                                                                                    из 'редакции' выпилили файл iexplorer.exe ага, небеса не упали. это если у вас автомобиль bmw, вы отколупываете от капота бейджик с логотипом и бац-у вас больше нет автомобиля bmw

                                                                                    Это всё рюшечки чтобы задобрить бюрократов из евросоюза, принцип это не меняет

                                                                                    вы же знаете как работает (точнее уже работала) 'новая' система справки в винде? она же работает на базе IE и файлы .hlp уже в ME стали деприкейтнутыми, как вы удалите IE 'полностью' не удалив работающую систему справки?
                                                                                    (речь о тех версий винды где справка ещё была конечно)

                                                                                    И напомню, первоначально те самые красоты с «фоном в папке» — и были отдельным продуктом под названием Microsoft Plus.

                                                                                    ага ага, и шли они для win95, а в 98 его уже встроили… когда в каждой папке стал появлятся мусор в виде файликов hta с шаблоном предпросмотра для окон проводника которые были браузером
                                                                                      0
                                                                                      hta

                                                                                      Классная была идея. Вот если бы движок, который их воспроизводит, не был доисторическим...

                                                                                        0
                                                                                        из 'редакции' выпилили файл iexplorer.exe ага, небеса не упали.

                                                                                        Увы, но нет. Мне доводилось портировать (именно так!) с Windows на Windows Core, и там нет таких API. Причем не только IE, но и shell api тоже.

                                                                                        Вспоминаю с содроганием, как пришлось изобретать стандартные диалоги для выбора каталогов и прочее. Чувствовал себя как студент — первокурсник, который в учебных целях повторяет стандартную реализацию :-)
                                                                                          0
                                                                                          из WinCore выкорчевали половину gui и сделано это было для серверов где он не нужен с оглядкой на юниксы. (а не потому что ie хотели убрать)
                                                                                          Это уже не была «полноценная винда» — это лишь чисто серверный кусок
                                                                                            –1
                                                                                            Это казуистика, вы ж понимаете… если микрософт это чудо продолжает называть Windows, и продавать за конский прайс, если гора софта продолжает быть с ним «совместима», если на него без проблем можно поставить IE — то почему это уже не Windows?

                                                                                            А раз это все еще Windows, то евробюрократы были правы, и IE от окошек таки отделяется. (подмигивает)

                                                                                            Кстати тот редкий случай, когда я не понимаю микрософт, им надо было сообщать о потере юзер экспириенса, прилагать кей фичерс которые «сломаются без», упирать на то что это часть общесистемного апи, и без него получается фрагментация окошек и удорожание под нее разработки, да много разумных доводов «за оставить» на самом-то деле было.

                                                                                            Но вместо этого микрософт стала в глупейшую позу «это неотделимо». А никто не любит, когда из него пытаются сделать дурака. Вот как добавили, так и удаляйте!

                                                                                            И кстати по итогу иксплойтер никуда не делся, юзеры получили баннер с альтернативами, а из системы зачем-то изгнали совершенно невиновный медиаплеер, что довершило этот театр абсурда.
                                                                                              +1
                                                                                              Это казуистика, вы ж понимаете…

                                                                                              то что мы тут спорим — это тоже казуистика

                                                                                              Есть продукт Windows 2008 — в который входит gui работающий на движке trident и есть продукт Windows Core — в который он не входит..gui, не входит
                                                                                              в чем казуистика? вы когда покупаете это написано в описании

                                                                                              слово windows ни о чем не говорит. например между Windows ME и Windows 2000 Datacenter общего только некоторые детали интерфейса и слово в названии и никого это не смущает
                                                                                                –1
                                                                                                например между Windows ME и Windows 2000 Datacenter общего только некоторые детали интерфейса

                                                                                                … а еще на них обоих ставится и работает один и тот же микрософт офис. Внезапно, 99% софта работает и там и там (за вычетом работы с драйверами и некоторых игр).

                                                                                                Потому что они обе предоставляют Win32 API.

                                                                                                Вот поэтому там и Windows в названии :-)

                                                                                                Кстати, Windows CE, Windows Mobile, Windows Phone — тоже предоставляют этот же Win32 API. И поэтому «совсем незначащее слово» там тоже присутствует.
                                                                                                  +1
                                                                                                  Внезапно, 99% софта работает и там и там

                                                                                                  как вы быстро забыли (не застали?) проблемы времен перехода на NT-линейку ;) и страшные матюги на XP (w2k домашние пользователи пропустили) где ничего не работает и всё тормозит… туда не просто так впилили 'режим совместимости с windows 95/98'

                                                                                                  Потому что они обе предоставляют Win32 API.

                                                                                                  полноценную Win32 API предоставляет WinNT, а в Win9x была его несколько урезанная портированая версия
                                                                                                    0
                                                                                                    как вы быстро забыли (не застали?) проблемы времен перехода на NT

                                                                                                    У меня был свой альтернативный путь, хех. Я с Win3.11 сразу спрыгнул на NT со времен 3.51, а на 95ку и клонов — только портировал свою нетленку.

                                                                                                    И при оном портировании я умудрялся наступать на всевозможнейшие и очень обильные грабли в самых неожиданных местах. Помню добился выпадения 95ки в DOS :-)

                                                                                                    Но тем не менее — оно именно работало. Где-то медленно, где-то плохо, где-то прилетало в лоб за попытку освободить браш который еще выбран в контексте, где-то приходилось самому себе слать сообщения чтобы сетевой стек работал «еще чуть-чуть быстрее», это я про WSAAsync* вспомнил.

                                                                                                    Главное и единственное, что действительно было плохо в 95ке — это отлаживаться. Ибо останов в отладчике немедленно приводил к утечкам ресурсов GDI.

                                                                                                    Что было плохо в NT по сравнению с 95? Драйверов часто не было, а те что были — или в режиме совместимости, или очень запаздывали.
                                                                                –2
                                                                                поэтому авторы нетшкафа просто так упарывались, поддерживая 23 (двадцать три) платформы одновременно, ага

                                                                                из которых 22 это вариации юникса в стиле solaris, aix и т.п. которые простые смертные только на работе у себя видели на рабочей станции и то не всегда?
                                                                                  0
                                                                                  Межделмашевские сейчас смотрят на эту тираду с недоумением. Это не бессмертного ли полумуха кто-то назвал клоном солярки?! :-)
                                                                                    –1
                                                                                    полумух уже был дефакто мертв на момент начала развития веба
                                                                                    судя по вики, warp4 вышел в 96 году… через два года вышел win98 с IE4 который и начал войну браузеров… а полуось свалилась в корпоративный сектор и там и умерла окончательно
                                                                                      0
                                                                                      полумух уже был дефакто мертв

                                                                                      В 1997 году??? Вы меня пугаете, у нас какие-то разные миры были в то время :-)

                                                                                      От поддержки полуоси в огнелисе отказались аж в районе 2015 что-ли года, в ходе большой чистки кода, емнип.
                                                                                        0
                                                                                        Вы меня минусите потому что я плохо отзываюсь о полуоси? (а ктото ещё и в карм плюнул)

                                                                                        я уж лучше помолчу тогда
                                                                                          0
                                                                                          Я похвалил — получил тот же результат :-) «И наступила эпоха всеобщего плюрализма» (С)…
                                                                                            0
                                                                                            да я собственно никак негативно о ней и не отзывался, то что ibm её закопала этот факт не отменить, а уж когда это произошло уже не столь важно.
                                                                            +5
                                                                            Почему IE/Edge подохло? Потому что сначала они упустили лидерство, а потом не смогли догнать. Это если коротко. А если длинно: IE6 был прекрасным, великолепным, очень технологичным браузером в момент выхода в 2001 году. Разработчики окончательно победили netscape и полностью успокоились. Но на руинах Netscape возник Mozilla suite, а затем и firefox. Вкладки была топовая фича для браузеров. Изначально firefox был именно удобный. Были вкладки, было блокирование всплывающих окон и прочее без чего сейчас невозможно представить браузер. Firefox развивался, добавлялись новые фичи, новые фишки в html/css. В IE6 ничего не менялось. Firefox потихоньку стал откусывать рынок. Microsoft спохватились и выпустили IE7. Но только в конце 2006-го года вместе с вислой. Причем IE7 был сильно устаревшим уже на момент выхода. IE8 был тормозным, но с гораздо более лучшей поддержкой технологий. Но момент был упущен, уже вышел chrome browser. У google мощнейшая маркетинговая поддержка. Кроме того, chrome действительно был очень быстрым на фоне других браузеров. А дальше было появление iphone с iphoneos, появление android с браузером на основе webkit. Восхождение webkit продолжилось. Microsoft ничем не могла ответить. У них не было своей мобильной платформы (windows mobile на фоне ios/android смотрелась как глиняные таблички, windows phone — эпичнейший провал). Невозможность портировать IE на мобилки других платформ, маркетинговый провал windows 8/8.1/windows phone. А последний гвоздь в крышку гроба IE — это Edge только для windows 10.
                                                                            IE/Edge нисколько не жалко, но очень не нравится установившаяся монополия chrome.
                                                                              –2
                                                                              У google мощнейшая маркетинговая поддержка.

                                                                              Взлетело потому что все начали пользоваться Google. Не думаю, что в то время у них был сильный маркетинг. Я банально скачал тогда Хром, потому что он запускался и работал быстрее, а так же там не было кучи опций которые нужно было специально отключать за не надобностью. Потом я начал подсаживать других людей на хром. Тогда он распространялся по сарафанному радио.

                                                                                0
                                                                                Шёл в довесок с инсталляторами флеша и другого ПО. Рекламировался на главной Google и даже по ТВ. Ну да, по сарафанному радио.
                                                                                  0

                                                                                  Реклама у себя же — это для компании ничего не стоит либо стоит очень дешево. По ТВ ни разу не видел — по крайней мере, бюджет на рекламу по ТВ во всем мире был бы конским (а браузер стал таки популярным во всем мире), поэтому правда где то посередине.

                                                                                    +1
                                                                                    В России по ТВ была реклама хрома, не думаю что это исключительно российская история
                                                                                    +2
                                                                                    главное в нем было — это легкость и скорость интерфейса и загрузки страниц. Такого не было ни у мозиллы ни у «облегченного» фаерфокса из-за собственного тормозного тулкита XUL и тяжести самого движка netscape. В то же время опера, которая в тогда была прибежищем альтернативщиков выпустила тяжелую перегруженную версию, ну и вообще она всегда была варезная. Поэтому все перфекционисты быстренько переехали на хром.
                                                                                  0

                                                                                  Имхо, прекрасным, великолепным, очень технологичным браузером в момент выхода в 2000 году был IE5.5. IE6 уже попытался усидеть на двух стульях (всех инновациях предшественника и нарождавшихся стандартах W3C, местами плохо сочетавшихся друг с другом, как в той же пресловутой блочной модели по дефолту), а это неоптимальная стратегия. Если бы IE продолжал четко гнуть свою линию, возможно, пересмотр стандартов в сторону "лучшего соответствия реальности" и переход на что-то типа HTML5 произошел бы раньше...

                                                                                  0
                                                                                  Если почитать статью, то видно что почти все перечисленные фишки появились в IE6 или раньше.
                                                                                  А еще IE был дырявый и легко заражался вирусами.
                                                                                    0
                                                                                    А кто-нибудь помнит, почему IE бесконечно долго сохранял веб-страницы на диск, когда Netscape это делал мгновенно.
                                                                                    Раньше мы сохраняли страницы на жесткий диск, а не оставляли открытыми вкладками в браузере…
                                                                                      0
                                                                                      потому что грузил все заново из интернетов, а другие браузеры сохраняли из кеша
                                                                                      –6
                                                                                      Если IE такой крутой
                                                                                      [филосораптор]
                                                                                      То почему он такое говно
                                                                                      • UFO just landed and posted this here
                                                                                          +1

                                                                                          Потому что крутой он в 2001 году, а говно – в 2020 (утрирую, но лишь слегка:)

                                                                                        • UFO just landed and posted this here
                                                                                            +2
                                                                                            Я и не знал, что MS умер.
                                                                                            «пытаться хоть как-то зацепиться за облака» — вторые в мире после амазона это значит зацепиться?
                                                                                            Ну и остальное очень притянуто за уши. Мне кажется неудачи MS все же не так велики, как вы пытаетесь показать.
                                                                                              +3
                                                                                              Это было время, когда не было чётких «принятых в индустрии подходов». Все велосипедили как могли. Тем более это странно слышать, когда речь идёт о временах почти что безоговорочной монополии Microsoft в этой области. Она и задавала тон индустрии.
                                                                                              Обратный слэш в URL
                                                                                              В URL они используют обычный слеш. Пути в ОС с обратным слешем — из-за соображений совместимости, а не потому что им хотелось «не как у всех».
                                                                                              имена методов с большой буквы в C#
                                                                                              Именование методов в стиле UpperCamelCase к лицу этому языку — визуально оно выглядит лучше чем lowerCamelCase, на мой вкус. На C/C++ часто вообще snake_case используется, что мне тоже нравится больше.

                                                                                              Конечно, действовала MS порой весьма топорно, что и сделало некоторые из их технологий гораздо менее успешними, чем те могли бы быть. Тот же C#/.NET всегда был гораздо более технологичным, чем Java. Если бы ещё с самого начала официально поддерживались платформы отличные от Windows… Сегодня то имеется поддержка всех популярных платформ, но за годы, пока .NET был официально только под Windows, индустрия успела серьёзно подсесть на Java там, где нужно было писать не под Windows.
                                                                                              • UFO just landed and posted this here
                                                                                              +2
                                                                                              Как говорится, издох Максим и…
                                                                                                –1
                                                                                                Зачем эти все картинки, анимация и прочие свистоперделки, не несущие никакой информации?
                                                                                                  0
                                                                                                  А сколько ругани было в адрес IE, говорили, что он и не умеет ничего, и вообще фу. А по факту, мамкины верстальщики просто не умели готовить мощнейший и технологичнейший браузер 90х и части нулевых, благодаря которому мы имеем сегодня Интернет во всем его многообразии.
                                                                                                    0

                                                                                                    Он был насквозь проприетарный.

                                                                                                    0
                                                                                                    В какой-то момент мне казалось забавным, что «это уже было в Симпсонах». Нововведения в CSS, которые выпускались уже хорошо в 2000-х, если не в 2010-х уже были реализованы в IE6, а то и в IE5. Может быть помните что-то типа этого:
                                                                                                    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000'); /* для IE6-9 */
                                                                                                    background: -webkit-linear-gradient(top, bottom, #ccc, #000); /* для webkit-браузеров */ 
                                                                                                    
                                                                                                    background: -moz-linear-gradient(top,  #ccc,  #000); /* для firefox 3.6+ */ 
                                                                                                    background: -o-linear-gradient(top,  #ccc,  #000); /* для Opera 11.10+ */
                                                                                                    background: -ms-linear-gradient(top,  #ccc,  #000); /* для IE10+ */


                                                                                                    Я рад, что сложный и многословный IE-синтаксис не стал стандартом, однако если бы MS продолжила выпускать обновления своего браузера раз в год — возможно мы бы жили сейчас в другом Вебе.
                                                                                                      0
                                                                                                      Всё хорошо, но это такие фичи как баги. А еще меня бесило что input type=«file» появился только в 5 версии IE
                                                                                                        –3
                                                                                                        / На мой взгляд, слишком мало людей в то время достаточно свободно владели JavaScript, не говоря уже об архитектуре сложных приложений на JavaScript/ Ну да, хорошие разработчики стремились использовать возможности доступные на всех браузерах, прежде всего на Firefox, а плохие делали сайты работающие только с IE. Поэтому, специфические возможноети IE, особенно ActiveX ориентированные только на Windows, были не востребованны, или использовались в коде библиотек, где некоторые функции реализовывались разными способами для разных браузеров.
                                                                                                          0
                                                                                                          Мне вот просто интересно
                                                                                                          в то время

                                                                                                          Это когда именно?
                                                                                                            0
                                                                                                            Я только процитировал автора. Может быть он имел в виду до появления HTML5? Или, может быть, эпоху до повляения библиотек типа Dojo, когда каждому разработчику лично приходилось заниматься поддержкой всех браузеров, причём именно IE давал больше всего проблем (и даже библиотеки не во всём помогали из за несовместимости css). Главная проблема многих новшеств IE была в том, что их намеренно делали такими, чтобы использовать их можно было только в среде Windows. «filter: progid:DXImageTransform.Microsoft.gradient» — это же вообще использование DirectX.

                                                                                                        Only users with full accounts can post comments. Log in, please.