Explorer Canvas

IE не обновлялся очень давно и не поддерживает тег CANVAS, предоставляющий интересные возможности — рисование через JavaScript вектором. Интересно, что Microsoft когда-то давно предлагала к использованию свою разработку — язык VML, а ранее браузеры позволяли использовать VRML. Последний благополучно умер, а VML так и поддерживается современными версиями Internet Explorer.

Вероятно некоторая схожесть технологий VML и CANVAS вдохновила Emil A Eklund на создание Explorer Canvas — трансляцию вызовов CANVAS в теги VML. Поддержка пока ограниченная, но ведётся активная работа по расширению возможностей. На сайте есть небольшая демонстрация возможностей. Кстати, хорошо видно, что в браузерах Opera и FireFox canvas ведёт себя по-разному.

Оставить комментарий

IE и HTTPS

Следующая проблема — некорректное поведение IE при использовании протокола HTTPS. Иногда (особенно на сайтах, где используются технологии изменения содержимого страницы без её перезагрузки), в странице используется тег iframe без содержимого или с указанием about:blank. IE считает, что такой IFRAME загружает содержимое не по протоколу HTTPS (формально он прав — конечно не загружает, но по сути-то содержимое пустое) и пишет предупреждение пользователю.

От этого раздражающего предупреждения можно избавиться следующим образом: указать в качестве src для iframe конструкцию

javascript:''

Т. е.

<iframe src="javascript:''></iframe>

javascript — это протокол, который позволяет выполнять JavaScript. Когда страница грузится по HTTPS этот скрипт выполняется в текущем протоколе — HTTPS, а указание пустой строки позволяет создать фрейм именно с пустым содержимым.

Оставить комментарий

Панель на картинке

Ещё одно изобретение Microsoft — панель, которая появляется при наведении на картинку. Функция хорошая, но на элементах оформления эта панель здорово портит кровь, особенно в тех случаях, когда нужно отобразить диалог, заблокировав и затемнив остальное содержимое сайта полупрозрачной картинкой — такой метод изготовления модальных диалогов всё чаще используется в вебе.

Вот в этих случаях не нужно, чтобы при наведении на картинку пользователь видел эту панель. Есть два способа избавиться от неё. Во-первых, можно запретить её появление на всей странице при помощи мета-тега: <meta http-equiv=«imagetoolbar» content=«no» />

Во-вторых, можно указать для какой картинки её показывать не нужно, используя нестандартный атрибут galleryimg

<img src="/img/image.jpg" width="100" height="100" alt="" galleryimg="no" >

Оставить комментарий

Выполнение JS только в IE

Кстати говоря, есть два способа выполнения JavaScript-кода только в IE. Первый, который, правда, сработает и в Opera — указание в script language «JScript». JScript — это название диалекта JavaScript, реализованного в IE. Следующее:

<script language="JScript">alert('1')</script>

cработает только в Opera и Internet Explorer.

Второй способ — так называемая «условная компиляция». Был придуман Microsoft, чтобы прятать новые конструкции языка (например, try … catch) от предыдущих версий браузера. Следующий код выполнится только в Internet Explorer. Остальные браузеры посчитают его комментарием в коде JavaScript

/*@cc_on

alert(1)

@*/

В «условной компиляции» можно выполнять ещё ряд действий, например, проверять версию jscript и т.д, всё это легко найти в любом поисковике.

Оставить комментарий

Условные комментарии

Одна из проблем — как подключать какие-то части кода в зависимости от того является ли браузер Internet Explorer. Веб-мастера, обычно, пользуются CSS-хаками, а вот о том, что есть специальная конструкция, которая позволяется это сделать, мало кто знает.

Специальная конструкция

<--[if IE...] ... <![endif]-->

позволяет не только прятать какие-то части HTML от других браузеров (которые воспринимают их как обычный HTML-комментарий), но и выбирать HTML в зависимости от версии IE. Более подробно можно прочитать, например, в статье Manfred Staudinger Taming Your Multiple IE Standalones. Для тех, кто не знает английского, скажу — общий принцип легко понятен из примеров.

Кстати, от Internet Explorer так же можно прятать HTML-код — надо просто заключить его в теги

<comment> … </comment>

Этот нестандартный тег Internet Explorer считает комментарием и, соответственно, не показывает и не обрабатывает его содержимое.

Оставить комментарий

Борьба с Activating ActiveX Controls

Одно из новшевств, которое появилось в последних обновлениях Internet Explorer — это «Activating ActiveX Controls» (KB912945). После обновления Internet Explorer позволяет управлять элементами, которые находятся на ActiveX (а к ним относится и Flash) только после клика на объект, сам объект до клика выделяется рамкой, если над ним провести мышкой. Само по себе это не так уж и мешает, только если этот ActiveX (Flash, например) не находится за каким-то контентом и если на нём находятся ссылки, то кликнуть по ним получается только со второго раза — первым активизируется ActiveX и только потом срабатывает ссылка.

Оказывается есть метод борьбы с этой проблемой. Всё что нужно сделать — обойти все теги object и присвоить их outerHTML самому себе. Например, так:

// When the page loads:
window.onload = function(){
  if (document.getElementsByTagName) {
    // Get all the tags of type object in the page.
      var objs = document.getElementsByTagName("object");
      for (i=0; i<objs.length; i++) {
        // Get the HTML content of each object tag
        // and replace it with itself.
        objs[i].outerHTML = objs[i].outerHTML;
      }
   }
}
// When the page unloads:
window.onunload = function() {
  if (document.getElementsByTagName) {
    //Get all the tags of type object in the page.
    var objs = document.getElementsByTagName("object");
    for (i=0; i<objs.length; i++) {
      // Clear out the HTML content of each object tag
      // to prevent an IE memory leak issue.
      objs[i].outerHTML = "";
    }
  }
}

Оставить комментарий

Альтернативные браузеры

Тенденция такова, что альтернативные браузеры (FireFox, Opera) не только быстро завоёвывают своё место под солнцем (уже до 30% на некоторых сайтах), но и активно развиваются — Opera 9, например, уже полностью поддерживает CSS2, SVG, Canvas и т. п. И лишь Internet Explorer стоит в стороне — монстр, который не обновлялся около шести лет. Седьмая версия, по крайней мере так пока кажется, не изменит кардинальный образом ситуацию — в нём не предполагается даже поддержка display: table*.

Сегодня я, пожалуй, сделаю небольшую подборку ссылок, которая помогает нам, в студии LIXIL GRAPHICS обходить подводные камни в поведении браузеров.

Оставить комментарий