我们发现了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
代码:ie8中的弹出窗口闪烁
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.我写了一个简单的观察器,每100ms查询弹出并转储它的属性。这就是我发现有人将body.style.borderStyle设置为“插入”,并在几秒钟后开始(不是一个styleName)。
3.审查了所有的JavaScript代码,没有找到任何关于插入或开始值的参考。 我99%确定这不是我们的代码改变边界。也许这是某种IE安全策略,作为对我们某些行为的反应。
任何想法 - 什么可能导致IE8弹出边框的这种变化?
P.S.此外,我无法在我们的环境之外重现此问题。
P.P.S.位于信任区的网站
P.P.P.S. IE模式是怪癖 P.P.P.P.S.同一页面上的某些弹出窗口可以正常工作,但是我找不到可能导致此类行为的区别。
IE开发团队决定让那些想要构建丰富界面的人努力工作。 供参考:弹出窗口不仅用于注入和攻击:-) – 2009-04-28 12:04:37