私は最近、プロジェクトの開発に参加しました。プロジェクトはブラウザベースのFat Client(RIA)アプリケーションであるため、ページには多くのIFRAMEがあります。後のテストでは、ブラウザのメモリが常に高く、IFRAMEページが開くほど、IEシリーズブラウザでは特に明白なメモリ使用量が大きくなることがわかりました。すべてのオープンIFrameページが閉じられていても、メモリの使用量は大幅に減少していません。 IEブラウザは、メモリの使用量が約400mに達すると非常に詰まってしまいます。分析では、IFRAMEがリリースされていないことがわかったため、すべての閉じたIFRAMEが占有しているメモリがリリースされました。完全にリリースすることはできませんが、IFRAMEメモリの使用量は増加し続けることはなく、アプリケーション全体のメモリ使用量は約150mで制御されます。
/** * iframeを動的に作成 * @param dom iframeコンテナを作成します。つまり、domにiframeを作成します。 DOMは、DIV、スパン、またはその他のタグにすることができます。 * @Param SRC WebページパスIFRAMEで開くパス* @Param ONLOADこのイベントは、iframeが空になった後にトリガーされます。* @return作成されたiframeオブジェクトを返す*/function createiframe(dom、src、onload){//ドキュメントでiframeを作成するiframe = document.reatelement( "iframe("); // iframe iframe.style.width = '100%'のスタイルを設定します。 iframe.style.height = '100%'; iframe.style.margin = '0'; iframe.style.padding = '0'; iframe.style.overflow = 'hidden'; iframe.style.border = 'none'; // iframe if(onload && object.prototype.tostring.call(onload)=== '[object function]'){if(iframe.attachevent){iframe.attachevent( 'onload'、onload); } else if(iframe.addeventlistener){iframe.addeventlistener( 'load'、onload); } else {iframe.onload = onload; }} iframe.src = src; // iframeをdom.appendchild(iframe)にロードします。 iframeを返します。 } /*** iframeを破壊し、iframeが占有しているメモリを解放します。 * @param iframe破壊する必要があるiframeオブジェクト*/function destroyiframe(iframe){// iframeを空白ページに向けてください。 iframe.src = 'arbout:blank'; try {iframe.contentwindow.document.write( ''); iframe.contentwindow.document.clear(); } catch(e){} // iframe.parentnode.removechild(iframe)からiframeを削除します。 }