我们在 IE8 中发现了弹出窗口的奇怪行为。在 IE7 和 IE6 中,我们的弹出窗口如下所示:
alt text http://img145.imageshack.us/img145/2318/normall.gif
但在 IE8 中,它有奇怪的边框,“闪烁”了 5-6 次,看起来像这样:
alt text 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”并在几秒钟后设置为开始(不是 styleName)的方式。
3. 审查了所有的 JavaScript 代码,没有发现任何关于 inset 或 outset 值的引用。我有 99% 的把握,这不是我们的代码更改了边界。也许这是某种 IE 安全策略作为对我们某些行为的反应。
任何想法——什么会导致 IE8 中弹出边框的这种变化?
PS 另外,我无法在我们的环境之外重现此问题。
受信任区域中的 PPS 站点
PPPS IE 模式是怪癖 PPPPS 同一页面上的某些弹出窗口工作正常,但我找不到它们之间可能导致这种行为的区别。