2009-04-24 17 views
0

私たちはIE8でポップアップの奇妙な動作を発見しました。
alt text http://img145.imageshack.us/img145/2318/normall.gif
をしかし、IE8で、それは奇妙な国境「が点滅」5-6回を持っており、次のようになります:IE7とIE6で私たちのポップアップは次のようになります。このポップアップを表示するために使用され
alt text http://img16.imageshack.us/img16/4677/bugo.gif
コード:
1.私はOnPropertyChangedをイベントにサブスクライブしようとしていた:私は調査何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; 
} 

。しかし、国境が変わっている間は起動しませんが、コードからこのプロパティを変更しようとするとうまくいきます。
2.私は100msごとにポップアップを照会してプロパティをダンプする単純ウォッチャーを書いていました。そういうわけで、誰かがbody.style.borderStyleを "inset"に設定し、数秒後に(styleNameではなく)始めることが分かったのです。
3.すべてのJavaScriptコードを確認して、インセットまたはアウトセット値の参照が見つかりませんでした。 私はこのコードが国境を変更していないことを99%確信しています。おそらくIEのセキュリティポリシーのいくつかの種類は、私たちの行動に反応するものです。
IE8でポップアップ境界線が変わる原因は何ですか?

P.S.また、私は環境の外でこの問題を再現することはできません。
P.P.S.信頼できるゾーン内のサイト
P.P.P.S. IEモードは奇妙です。 P.P.P.P.S.同じページの一部のポップアップは正常に動作しますが、そのような動作につながる可能性のある違いを見つけることはできません。

答えて

0

することは、私は、このコードで問題を再現していた:

<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" /> 

この現象は、IEのことで、デフォルトの信頼できるためにも、「無効」の値を持つ「サイズや位置の制限なしにスクリプトでウィンドウを開くことを許可する」設定するのですゾーン

0

おそらく、IE開発チームが良好となるとポップアップを使用したい方に苦しい生活をすることに決めた:)

+0

IEデベロッパーチームは、豊富なインターフェイスを構築したいと思っている人たちの生活を難しくすることに決めました。 FYI:ポップアップは注射と攻撃のためだけでなく、:-) –

+0

ハハエア - 仕事にポップアップを必要とする豊かなUIです。 Google Maps/Gmailのデベロッパーチームに知らせて、 "rich"という新しい定義を追求して恐ろしくUXを破ることができるようにする:p –

0

私はIE8でグーグルを使用するたびに点滅の並べ替えを取得し、上にマウスを置きます検索入力フィールドwhi私がマウスを動かすまで、私は入力しないようにしています。しかし、私の原因はTweakuiの「アクティベーションはマウスのX-Mouse機能に従っていた。しかし、この機能を無効にして検索を行うと、まだ点滅する「Google検索」が表示されます。

これは私がIEを避ける理由です。まだまだバギーです。私はtweakuiがMSによってサポートされていないかどうか気にしない。なぜMSはIEを完全に書き換えないのですか?