Мы обнаружили странное поведение всплывающих окон в IE8. В IE7 и IE6 наше всплывающее окно выглядит так:
альтернативный текст http://img145.imageshack.us/img145/2318/normall.gif
Но в IE8 он имеет странную границу, которая "мигает" 5-6 раз и выглядит так:
альтернативный текст http://img16.imageshack.us/img16/4677/bugo.gif
Код, который используется для отображения этого всплывающего окна:
Browser.prototype.showPopup = function(someHtml) {
...
var popup = doc.parentWindow.createPopup();
for(var n = 0; n < doc.styleSheets.length; n++) {
popup.document.createStyleSheet(document.styleSheets[n].href);
}
popup.document.body.innerHTML = "<div style=\"width:100%;height:100%;overflow:auto\">" + someHtml + "</div>";
popup.document.parentWindow.Form = Form;
popup.document.attachEvent("onselectstart", IEOnSelectStart);
popup.document.attachEvent("oncontextmenu", IEOnContextMenu);
...
popup.show(x, y, width, height, ctl);
doc.popup = popup;
}
Что я исследовал:
1. Я пытался подписаться на событие onpropertychanged. Но он не срабатывает при изменении границ, хотя работает нормально, если я пытаюсь изменить это свойство из кода.
2. Я написал простой наблюдатель, который каждые 100 мс запрашивает всплывающее окно и выводит его свойства. Вот как я обнаружил, что кто-то устанавливает body.style.borderStyle в «inset» и через несколько секунд в «outset» (не styleName).
3. Пересмотрел весь код JavaScript и не нашел ссылок на значения inset или outset.
Я на 99% уверен, что это не наш код, меняет границы. Может быть, это какая-то политика безопасности IE как реакция на некоторые наши действия.
Есть идеи - что может вызвать такие изменения всплывающих окон в IE8?
P.S. Также я не могу воспроизвести эту проблему за пределами нашей среды.
P.P.S. Сайт в доверенной зоне
P.P.P.S. IE режим причуды
P.P.P.P.S. Некоторые всплывающие окна на одной странице работают нормально, но я не могу найти разницу между ними, которая может привести к такому поведению.