iframe ナビゲーション中のイベント ハンドラーと DOM 要素の間の参照ループによって引き起こされる IE8 のメモリ リークを取り除こうとしています。ページ上の他のスクリプトを変更できません。
そのため、DOM とウィンドウ オブジェクトを調べ、すべてのフィールドを無効にして、DOM 要素がイベント ハンドラーを参照しないようにするというアイデアがありました。
ここでの問題は、他のすべてのアンロード ハンドラーが実行された後にそれを行う必要があることです。これは、他のハンドラーが無効にするフィールドに依存している可能性があるためです。
親ウィンドウのどこかに移動する前にドキュメント オブジェクトを保存しようとしました。次に、iframe でのナビゲーションが完了した後 (onload イベント)、保存されたドキュメント オブジェクトでクリーンアップを実行しました。しかし、古いページがアンロードされた後、このドキュメントにアクセスすると不正 (アクセス エラー) になるため、それはできないようです。
私が試したもう1つのアプローチは、最後に呼び出されることが保証されるウィンドウアンロードハンドラーを追加する方法を見つけることでしたが、これまでのところ成功していません。それを達成するために、アンロード イベントのすべてのハンドラーを呼び出してクリーンアップし、コードを実行しようとしましたが、アンロード イベントを手動でトリガーする方法が見つかりませんでした。
何か案は?残念ながら、ページは独自のアンロード ハンドラを持つ jQuery と Microsoft Ajax を使用しています。特に、私の無効化は MS Ajax アンロード ハンドラーを破壊します。これは、すべてのライブラリー名前空間が削除されるためです。