Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Custom tags в Internet Explorer

Утверждаю и буду продолжать утверждать, что Internet Explorer — самый недооценённый браузер века интернета, а все более поздние идеи — суть калька технологий, которые в нём уже есть. Ещё одна технология, с которой я познакомился в году 1998. Тогда (впрочем, как и многие сейчас) в качестве «растяжек» для ограничения минимальной ширины контента, использовали так называемый «нуль-gif» — прозрачную GIF-картинку 1x1 пикселей, которая вставлялась внутрь контейнера. Картинке выставлялась нужна ширина и высота, таким образом контейнер не мог «схлопнуться».

Способ настолько популярен, что некоторые веб-серверы, например «nginx» (в модуле http_empty_gif) или 0W (директива EMPTY) умеют встроенные средства, чтобы её генерировать, причём 0W умеет даже менять её цвет.

В те времена, как я уже говорил, существовали только две программы, имеющие право носить звание «браузера» — это Internet Explorer и Netscape Navigator. Их различия, часто, были настолько коренными (в разнице отображения, а то и названиях тегов), что изготавливались две версии сайта — под два браузера и пользователя автоматически (или предлагая выбор) перебрасывали на одну из них. В частности, такая особенность вёрстки позволяла задействовать мощности браузеров на полную силу.

Custom tag — технология в Internet Explorer, позволяющая (в определённых пределах) «придумывать» свои теги. Что-то похожее есть сейчас в браузере «Опера» — можно использовать любое сочетание букв как тег, задав ему произвольный стиль, это хороший ход, потому что какую-то часть тегов можно описать в виде CSS-файла, не заморачиваясь над встроенной обработкой. Скорее всего, это было следствием поддержки «Оперой» WAP-сайтов (кстати, если вы не знали, то попробуйте — «Опера» отображает WAP-сайты!).

В Internet Explorer такой свободы нет, custom tag «работает» только в определённом пространстве имён, но есть и свои, очень существенные плюсы. Если вы не знаете, что такое пространство имён, не расстраивайтесь — на понимании сути это никак не сказывается. В следующем примере префикс «b:», с которого начинается тег и есть «пространство имён», а «xmlns:b» — его идентификатор.

Итак, в те далёкие времена я делал «растяжки» через специально придуманный custom tag «spacer», с появлением в 1999-м году IE 5 и expression в нём (специальные CSS-свойства, позволяющие использовать JavaScript внутри CSS) это стало делать ещё удобнее.

<html xmlns:b="/">
<style type="text/css">
b\:spacer
{
    display: inline-block;
    width: expression(this.width+'px');
    height: expression(this.height+'px');
}
</style>

Слово<b:spacer width="200" height="1"></b:spacer>Слово
</html>

В примере задан тег «spacer» в пространстве имён «b» (поэтому он используется с префиксом «b:», custom tags только так и работают). Я использовал expression в CSS, чтобы свойства новоявленного тега попадали в CSS. В «Опере» такой фокус невыполним, к сожалению, хотя свойство «attr» вполне подошло бы для такой цели, но он работает только с атрибутом «content».

В тех же рамках можно усложнить поведение — добавить значения по умолчанию, новые атрибуты, можно назвать тег для экономии «b:s» , а атрибуты — «w» и «h».

6 комментариев
nudnik.ru 2007

IE — очень хороший браузер. Просто он застрял в развитии на несколько лет.

И всякие пидерастические браузеры его «догнали».

gz.myopenid.com 2007

Лучше бы эти люди пораньше реализовали min-width

Евгений Степанищев (bolknote.ru) 2007

Задним умом все крепки. Это сейчас мы знаем, что это было бы лучше.

b10z.livejournal.com 2007

хехе да лан был в 2001 хорошим браузером наверное, а теперь...
Жень, зачем нуна такую батву реализовывать в движке, если есть xml xslt он более удобный имхо. Лучше включили бы норм поддержку того, что используют разработчики и чаще обновляли движок!!
пысы: кстати тег видео не только в опере :) в последних версиях вебкита тож его поддержку встроили, интересна буут в джеско вводить

Евгений Степанищев (bolknote.ru) 2007

Просто, он не те стандартны поддерживает ;) Имеет право, кстати :) Кстати, поддержка XSLT в браузере появилась первой именно в Internet Explorer.

Gecko же собирается использовать HTML5? Значит, тег появится.

Ramon (rembish.ru) 2007

Замечу, что у IE *очень-очень* неплохая поддержка XSLT.