2

この問題はIE8でのみ発生します(IE8互換モードでは発生しません)。sample.htmというファイルがあります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
    <script src='http://jqueryjs.googlecode.com/files/jquery-1.3.2.js' type='text/javascript'></script>
</head>
<body style='position:relative;z-index:1'>
<input><a href="javascript:Popup('test1.html');">Click</a>
<script>
function Popup(url) {
    overlay = $("<div style='position:fixed; width:100%; height:100%; z-index:10005'><div style='position:absolute; width:100%; height:100%; background:black; -ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\"; filter: alpha(opacity=50);'></div>");
    iframe = $("<iframe name='Overlay' style='position:absolute; height:80%; width:80%; top:10%; left:10%;' src='" + url + "'></iframe>");
    closebut = $("<img style='position:absolute; cursor:pointer; right:10%; top:10%;' width='24px' height='24px' src='/images/close.png' onclick='RemovePopup()' >");
    overlay.append(iframe).append(closebut);
    $('body').prepend(overlay);
}
function RemovePopup() {
    overlay.animate({top:'100%'},800,'swing', function() { $(this).remove(); });
}
</script>
</div></body></html>

test1.htmlの完全な内容は次のとおりです。<html><head></head><body><input></body></html>

したがって、これら2つのファイルを作成し、IE8でsample.htmを開き、リンクをクリックしてポップアップを開き、そこにテキストボックスに何かを入力し、ポップアップを閉じて、最初のテキストボックスを入力してみます。可能であれば、2〜3回繰り返します。最終的に、最初のテキストボックスは無効になります。

誰かが回避策を提案できますか?

助けてくれてありがとう

4

1 に答える 1

2

focus本質的にこれは問題だと思います。<input> ブラウザを無効になっているように見える状況にできる場合は、実際Tabににアクセスして<input>、期待どおりの値を入力できます。

$(this).remove();アニメーションの最後にiframeを削除するという呼び出しが、iframe内の要素にフォーカスがあるときに問題を引き起こしていると思います。<input>iframeを削除する前に最初の焦点を当てることをお勧めします。

たとえば、$('input:first').focus();それが最初の入力である場合に使用します。ここでの私のテストではうまくいくようです。

于 2012-11-20T15:06:38.590 に答える