我們發現了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