[Doubled Article, Delete Please!]Internet Explorer 9 以後で開いた子ウィンドウを素早く閉じると親ウィンドウが開き直される場合があります

現象
Internet Explorer 9 以後で、window.open で新しい IE ウィンドウを起動した後、子画面を素早く閉じると、親画面で 「この Web ページに問題があるため、Internet Explorer のタブを開き直しました」とのメッセージが表示され、再描画される場合があります。
原因
この現象は Internet Explorer 9 以後に搭載されたハング回復機能に起因した設計通りの動作です。


ハング回復機能は古い Tab プロセスを終了して、新しい Tab プロセス内に画面を再描画するように設計されています。子画面が初期化の最中にビジー状態になり、その最中に閉じられると、ハング回復のトリガーが触発される場合があります。また、ハング回復はビジーになったウィンドウ (このシナリオでは子画面) だけを回復することができません。同一タブプロセス内に動作している全ての画面 (このシナリオでは親画面も含まれる) を一緒に回復します。そのため、子ウィンドウが閉じられた後、親画面だけが開き直す結果になります。
解決方法
この現象を解消するためには、子画面が初期化の最中にウィンドウを閉じないようにしてください。

子画面の初期化中にビジーになっても、ウィンドウを閉じなければ、ハング回復のトリガーが触発されないので、この現象が発生しません。 子ウィンドウが初期化完了後にビジー状態から解除されますので、それ以後ウィンドウを閉じても現象が発生しません。

回避策
ハング回復機能を禁止することにより、この現象を回避できます。

ハング回復機能を完全に無効にするには、IE を -nohangrecovery のオプションを指定して起動する (例: iexplore.exe -nohangrecovery)、或いは以下のレジストリを設定します。

キー : HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
名前 : HangRecovery
種類 : REG_DWORD
値 : 0 
状況
弊社はこの事象をハング回復機能の機能制限として認識しております。
詳細
この現象は特定のサイトではなく、初期化の際に 30ms 以上のビジー状態が維持する任意の子画面において、発生し得ます。IE のハング回復機能は 30ms 以上にウィンドウ メッセージに応答できない画面をビジーとして標記し、次のウィンドウメッセージを応答できたらビジー状態を解除します。子ウィンドウがビジーに標記されている間に閉じられると、ハング回復のトリガーが触発されます。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2910069 - 最終更新日: 10/04/2016 15:34:00 - リビジョン: 3.0

Windows Internet Explorer 10, Windows Internet Explorer 9

  • kbharmony KB2910069
フィードバック