Explorer Canvas
IE не обновлялся очень давно и не поддерживает тег CANVAS, предоставляющий интересные возможности — рисование через JavaScript вектором. Интересно, что Microsoft
Вероятно некоторая схожесть технологий 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 — панель, которая появляется при наведении на картинку. Функция хорошая, но на элементах оформления эта панель здорово портит кровь, особенно в тех случаях, когда нужно отобразить диалог, заблокировав и затемнив остальное содержимое сайта полупрозрачной картинкой — такой метод изготовления модальных диалогов всё чаще используется в вебе.
Вот в этих случаях не нужно, чтобы при наведении на картинку пользователь видел эту панель. Есть два способа избавиться от неё.
<img src="/img/image.jpg" width="100" height="100" alt="" galleryimg="no" >Выполнение JS только в IE
Кстати говоря, есть два способа выполнения
<script language="JScript">alert('1')</script>cработает только в Opera и Internet Explorer.
Второй способ — так называемая «условная компиляция». Был придуман Microsoft, чтобы прятать новые конструкции языка (например, try … catch) от предыдущих версий браузера. Следующий код выполнится только в Internet Explorer. Остальные браузеры посчитают его комментарием в коде JavaScript
/*@cc_on
alert(1)
@*/В «условной компиляции» можно выполнять ещё ряд действий, например, проверять версию jscript и т.д, всё это легко найти в любом поисковике.
Условные комментарии
Одна из проблем — как подключать
Специальная конструкция
<--[if IE...] ... <![endif]-->позволяет не только прятать
Кстати, от Internet Explorer так же можно прятать
<comment> … </comment>Этот нестандартный тег Internet Explorer считает комментарием и, соответственно, не показывает и не обрабатывает его содержимое.
Борьба с Activating ActiveX Controls
Одно из новшевств, которое появилось в последних обновлениях Internet Explorer — это «Activating ActiveX Controls» (KB912945). После обновления Internet Explorer позволяет управлять элементами, которые находятся на ActiveX (а к ним относится и Flash) только после клика на объект, сам объект до клика выделяется рамкой, если над ним провести мышкой. Само по себе это не так уж и мешает, только если этот ActiveX (Flash, например) не находится
Оказывается есть метод борьбы с этой проблемой. Всё что нужно сделать — обойти все теги 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 обходить подводные камни в поведении браузеров.