Troubleshooting website display or functionality issues in Edge on Windows 11
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
画面A(親) ⇒ 画面B(子) ⇒ 画面C(孫)
⇒はポップアップ表示
上記状態で画面C(孫)の戻るリンク(window.close();のみ)押下で、
画面B(子)が裏側に回り、画面A(親)が最前面に表示されます。
※期待結果は、画面Bが最前面に表示されること。
ポップアップ表示は
var aaaa = window.open('対象画面','画面名','オプション指定');
にてポップアップ表示しています。
【環境】
Edge(IEモード)
Windows 累積パッチ(KB5065426)
Microsoft Edge (140.0.3485.66)
.Net Framework 4.8.1 (KB5064401)
適用(上記パッチ)で上記画面の表示順が変更になってしまいました。
上記不正が発生している原因と解消方法をご教授いただきたいです。
Troubleshooting website display or functionality issues in Edge on Windows 11
@星田 知子 様、こんにちは。
お問い合わせありがとうございます!
ご説明いただいた内容からすると、問題は(画面 A → 画面 B → 画面 C で、C を閉じると B ではなく A が前面に出てしまう)Edge の IE モードでのウィンドウフォーカスの扱いに関係しており、最新の Windows アップデート (KB5065426) の後に発生しているようです。
window.close();
例えると紙の山のようなものです: C が一番上、B がその下、A が一番下にあります。C を置いて B を手に取るつもりが、下の A が飛び出してくる感じです。
C を閉じる前に、ブラウザにどのウィンドウを前面に出すかを明示的に指示できます。
1. C の閉じるコードを変更:
if (window.opener && !window.opener.closed) {
try {
window.opener.focus(); // B を前面に表示
} catch (e) {
// エラーが出ても無視
}
}
window.close(); // その後 C を閉じる
2. 任意: 少し遅延を入れる
setTimeout(() => {
if (window.opener && !window.opener.closed) {
window.opener.focus();
}
window.close();
}, 50); // 50ミリ秒
これにより、アップデート後の Edge IE モードでも B が確実に前面に表示 されます。
onunload やポーリング)して、自動的に前面に出るようにすることもできます。参考になれば幸いです!もし役に立った場合は、他の方のために解決済みとしてマークしてみてください。