2009-04-24 13 views
0

Wir hatten seltsames Verhalten von Popups in IE8 entdeckt. In IE7 und IE6 unsere Pop-up sieht wie folgt aus:
alt text http://img145.imageshack.us/img145/2318/normall.gif
Aber in IE8 hat es seltsam Grenze, die „blinkt“ für 5-6 mal und sieht wie folgt aus:
alt text http://img16.imageshack.us/img16/4677/bugo.gif
-Code, die für die Ansicht des Pop-up verwendet wird:Popup blinkt in 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; 
} 

Was ich recherchiert:
1. ich hatte versucht, auf OnPropertyChanged Ereignis zu abonnieren. Aber es funktioniert nicht, während der Rahmen sich ändert, während es funktioniert, wenn ich versuche, diese Eigenschaften vom Code zu ändern.
2. Ich hatte einen einfachen Watcher geschrieben, der jede 100ms Popup abfragt und die Eigenschaften ablegt. So habe ich festgestellt, dass jemand body.style.borderStyle auf "inset" setzt und nach ein paar Sekunden bis zum Anfang (kein styleName).
3. Überprüfte den gesamten JavaScript-Code und fand keine Referenzen auf Einfüge- oder Anfangswerte. Ich bin zu 99% sicher, dass dies nicht unser Code ist, der die Grenzen ändert. Vielleicht ist es eine Art von Sicherheitspolitik für das Internet als Reaktion auf einige unserer Aktionen.
Irgendwelche Ideen - was könnte solche Änderungen der Popup-Grenzen in IE8 verursachen?

P.S. Außerdem kann ich dieses Problem nicht außerhalb unserer Umgebung reproduzieren.
P.P.S. Site in der vertrauenswürdigen Zone
P.P.S. IE-Modus ist Macken P.P.P.P.S. Einige Popups auf derselben Seite funktionieren gut, aber ich kann den Unterschied zwischen ihnen nicht finden, der zu einem solchen Verhalten führen könnte.

Antwort

0

ich Problem mit diesem Code wiedergegeben hatte:

<script type="text/javascript" > 
    document.showInnerPopup = function(){ 
     alert("Inner popup"); 
    } 

    function btnOnClick(){ 
     var popup = document.parentWindow.createPopup(); 
     popup.document.body.innerHTML = "<div style=\"border: 1px solid red;width: 100%; height:100%\" id=\"popupDiv\" onclick=\"javascript:document.showInnerPopup(this,event)\">Click to show another popup</div>"; 
     popup.document.showInnerPopup = function(obj, evt) { 
      var doc = evt.srcElement.ownerDocument; 

      var popup = doc.parentWindow.createPopup(); 
      popup.document.body.innerHTML = "<div style=\"border: 1px solid green;width: 100%; height:100%\">Nested popup</div>" 
      popup.show(10, -20, 150, 150, doc.body); 
     } 

     popup.show(10, -20, 100, 100, document.getElementById("btn")); 
     document.btn = document.getElementById("btn"); 
     document.popup = popup; 
    } 
</script> 
<input type="button" value="Show Popup" onclick="btnOnClick()" id="btn" /> 

Dieses Verhalten, weil der IE-Einstellung „Skript initiierte zulassen Fenster ohne Größen- bzw. Positionseinschränkungen“, die von-Standardwert für vertrauenswürdige hat, ist „Disable“ even

Zone
0

Vielleicht haben die IE dev-Team entschieden, gut zu werden und das Leben schwer machen auf diejenigen, die Pop-ups verwenden möchten :)

+0

Das Entwicklerteam von IE hat beschlossen, das Leben schwer zu machen für diejenigen, die reichhaltige Schnittstellen erstellen wollen. FYI: Popups werden nicht nur für Injektion und Angriffe verwendet :-) –

+0

Haha ja - all die reichen UIs, die Popups zum Arbeiten benötigen. Lassen Sie die Entwickler von Google Maps/Gmail besser wissen, dass sie die UX bei der Verfolgung dieser neuen Definition von "reich" schrecklich brechen können: p –

0

ich eine Art zu blinken bekommen, wenn ich Google in IE8 verwenden und legen Sie die Maus über die Sucheintragsfeld whi ch verhindert, dass ich tippe, bis ich die Maus wegbewege. Aber meine Ursache war die "X-Mouse-Funktion" der Tweakui-Maus. Wenn diese Funktion deaktiviert ist und Sie über der Suche verweilen, wird immer noch eine "Google-Suche" ein- und ausgeschaltet.

Deshalb vermeide ich IE. Es ist immer noch so buggy. Es ist mir egal, wenn Tweakui von MS nicht unterstützt wird. Warum schreibt MS den IE nicht einfach neu?