0

IE8でポップアップの奇妙な動作を発見しました。IE7とIE6では、ポップアップは次のようになります。alt
text http://img145.imageshack.us/img145/2318/normall.gif
しかし、IE8では、5〜6回「点滅」する奇妙な境界線があり、次のようになります。
代替テキスト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。プロパティが変更されたイベントをサブスクライブしようとしました。ただし、境界線が変更されている間は起動しませんが、コードからこのプロパティを変更しようとすると正常に機能します。
2.100msごとにポップアップをクエリしてプロパティをダンプする単純なウォッチャーを作成しました。このようにして、誰かがbody.style.borderStyleを「inset」に設定し、数秒後に(styleNameではなく)outsetに設定することを発見しました。
3.すべてのJavaScriptコードを確認しましたが、インセット値またはアウトセット値に関する参照は見つかりませんでした。私はこれが私たちのコードが境界を変更するのではないことを99%確信しています。多分それは私たちの行動に対する反応としてのある種のIEセキュリティポリシーです。
何かアイデア-IE8のポップアップ境界線のそのような変更を引き起こす可能性があるものは何ですか?

PSまた、私はこの問題を私たちの環境の外で再現することはできません。
信頼できるゾーンのPPSサイト
PPPSIEモードは癖ですPPPPS同じページのいくつかのポップアップは正常に機能しますが、そのような動作につながる可能性のある違いを見つけることができません。

4

3 に答える 3

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が「サイズや位置の制約なしにスクリプトで開始されるウィンドウを許可する」を設定しているためです。これは、信頼できるゾーンでもデフォルトで「無効」の値になります。

于 2009-04-28T11:09:19.500 に答える
0

おそらく、IE開発チームは、ポップアップを使用したい人たちを元気にし、人生を苦しめることに決めました:)

于 2009-04-28T11:15:39.123 に答える
0

IE8でGoogleを使用し、検索入力フィールドの上にマウスを置くと、ある種の点滅が発生します。これにより、マウスを離すまで入力できなくなります。しかし、私の原因は、Tweakuiの「アクティベーションがマウスに続く」X-Mouse機能でした。それでも、その機能をオフにして検索にカーソルを合わせると、点滅する「Google検索」がまだあります。

これが私がIEを避ける理由です。それはまだとてもバグがあります。tweakuiがMSでサポートされていなくてもかまいません。なぜMSはIEを完全に書き直さないのですか?

于 2009-06-22T19:10:08.617 に答える