3

モーダル ダイアログを使用します。モーダル ダイアログは、マスク div とコンテナー div で構築されます。コンテナー div には、モーダル aspx ページを含む iFrame が含まれています。モーダル ダイアログが初期化されると、マスクとコンテナーがページ本体に追加されます。モーダル ダイアログを閉じると、マスクとコンテナーが本文から削除されます。

すべて正常に動作し、Visual Studio でデバッグを開始して新しいモーダル ダイアログを開くと、デバッガーの「スクリプト ドキュメント - Windows Internet Explorer - somePage.aspx」に新しいページが表示されます。

しかし、ダイアログを閉じて削除すると、ページ全体を更新するまで、ページは VS デバッガーで「生きている」ままになります。

これは悪いですか?本文から削除されたとしても、ページはどこかで「生き続ける」のですか? それとも、Visual Studio デバッガーの UI だけですか?

際限なく増加するスクリプト ブロック ファイルについて、この質問を見つけました。それは同じ問題だと思いますが、その質問には実際には答えがありません。

4

1 に答える 1

2

iframe を含むコンテナー div を削除するだけでは不十分です。

iframe を削除して破棄するには、これで十分だと思いました。

$(this.mask).remove();
$(this.container).remove();

コンテナーには、もう 1 つの div (モーダル ダイアログ タイトル) と iframe が含まれています。上記のコードを使用してコンテナーを強制終了しても、その iframeは削除されません。新しいダイアログを閉じて開くたびに、Windows タスク マネージャーの iexplore.exe プロセスのメモリも増えていくため、Visual Studio デバッガーの問題だけではないようです。

解決策: iframe を明示的に削除すると、ページがデバッガーから消えます。

モーダル ダイアログの初期化時に iframe を var に保存し、モーダル ダイアログを削除するときに iframe を明示的に削除することで、これを行うことができます。こちらです:

モーダルダイアログの作成/初期化時:

this.frame = this.container.childNodes[0].childNodes[1];

モーダルダイアログを閉じると:

$(this.frame).remove();
于 2012-06-20T10:58:36.937 に答える