barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком Internet Explorer. Показать все сообщения
Показаны сообщения с ярлыком Internet Explorer. Показать все сообщения

суббота, 11 октября 2014 г.

IE8: аналог getElementsByTagNameNS для объекта Microsoft.XMLDOM

Задача

В Internet Explorer 8 есть объект Microsoft.XMLDOM (передаваемый dojo-вским xjrPost в обработчик success), нужно из него вытащить элемент по имени тега, причем элемент имеет пространство имен.

Решение

Немного замысловато (здесь xml - объект Microsoft.XMLDOM):

xml.setProperty("SelectionNamespaces", "xmlns:myns='http://myns.com/ns'");
xml.setProperty("SelectionLanguage", "XPath");
alert(xml.documentElement.selectNodes("//myns:MyElement").length);

воскресенье, 20 января 2013 г.

IE 9: почему window.open() возвращает null?

Проблема:

Предыстория такая. Есть сайтик на localhost, использующий авторизацию через вк`ашное OpenAPI. Работает авторизация везде, кроме IE. В IE, как и в других браузерах, по нажатию кнопки входа вызывается VK.Auth.login(), открывающая popup, который запрашивает доступ подключенного сайта к информации с ВК:


После того, как юзер нажмет "Разрешить" или "Отмена", или просто закроет popup, должен вызваться callback, переданный в VK.Auth.login() единственным параметром. Во всех браузерах все работет как нужно, а вот IE вызывает callback, не дожидаясь каких-либо действий с popup`ом.
После отладки выяснилось, что причина такого поведения кромется в том, что IE по какой-то причине при вызове window.open() возвращает ull вместо объекта, описывающего открытое окно.

Причина:

Причина крылась в том, что localhost и vk.com расположены в разных зонах: первый - в зоне "Местная интрасеть", второй - "Интернет", и открытие popup`а является в таком случае межзонным. 

Решение:

Вариант 1: отключить защищенный режим для зоны "Интернет", сняв соотв. галочку:


Вариант 2: убрать localhost из зоны "Местная интрасеть" снятием галочки:


Тут правда мы лишаемся некоторых ништяков, например, возможности использовать объект "console" в JS-скриптах.

среда, 21 марта 2012 г.

gRaphael в IE: баг с секторами, большими полукруга, при наличии секторов в 0 градусов

Нашел неприятный баг в gRaphaël в Internet Explorer 8, связанный с появлением белой полосы, разделяющей сектор, больший 180 градусов, на 2 части:

Такое поведение проявляется только в случае, если имеется сектор нулевой ширины. если его убрать - большой сектор снова становится цельным.

вторник, 17 января 2012 г.

IE, загрузка файлов и Cache-Control: no-cache, no-store

Проблема:
Заголовок "Cache-Control: no-cache, no-store", предусмотренный в HTTP/1.1 для предотвращения кэширования информации браузерами и прокси-серверами, будучи установленным для ответа, отсылающего файл, вызывает у Internet Explorer появление сообщения (правда не в 100% случаев, я так и не нашел закономерности):
"Не удалось открыть этот интернет-узел. Запрошенный узел недоступен или не найден..."
и файл, естественно, не загружается.

Решение:
Ничего не поделаешь, для файлов заголовок "Cache-Control: no-cache, no-store" придется не ставить. Впрочем, я думаю IE и так не будет кэшировать файлы =)

среда, 23 ноября 2011 г.

Windows: управление сертификатами пользователя не через Internet Explorer

Управлять сертификатами пользователя можно через IE (Свойства обозревателя -> Содержание -> Сертификаты). Но можно это делать и без него: Выполнить -> mmc -> Файл -> Добавить или удалить оснастку -> Найти в списку "Сертификаты" и нажать "Добавить", а потом - "Ок". В дереве консоли появится пункт "Сертификаты", позволяющий управлять сертификатами. Параметры консоли необходимо сохранить в msc-файл, запуская который Вы будете попадать в только что созданную консоль управления сертификатами.