Baru-baru ini, pasukan projek mendapati bahawa jika borang timbul menggunakan showModalDialog mengandungi objek IFrame, sumber memori yang diduduki oleh objek IFrame tidak akan dikeluarkan selepas borang ditutup. Selepas pop timbul dan penutupan diulang berkali-kali, memori yang diduduki oleh pelayar IE boleh melebihi ratusan MB Dalam kes yang teruk, pelayar IE melaporkan ralat dan tidak boleh ditutup satu-satunya cara untuk memulakan semula penyemak imbas proses tersebut. Selepas ujian, masalah ini juga wujud apabila menggunakan kaedah terbuka untuk muncul.
Dalam penyemak imbas IE8, terdapat perbezaan dalam penggunaan memori antara pop timbul terbuka dan showModalDialog:
Borang yang muncul dalam mod terbuka menduduki proses iexplorer.exe bebas;
Borang yang muncul oleh showModalDialog menggunakan proses iexplorer.exe yang sama seperti borang induk;Selepas mencari, saya mendapati bahawa penyelesaiannya ialah memadamkan objek IFrame dari borang sebelum menutup borang Kodnya adalah seperti berikut:
<span style="font-size:18px"> var el = document.getElementById("scanIf"); el.src=""; el.contentWindow.document.write(''); el.contentWindow.document.clear(); var p = el.parentNode; p.removeChild(el); </span>
1. el.src mungkin belum dilaksanakan lagi, dan pernyataan berikut akan dilaksanakan Jika IFrame mengandungi kandungan merentas domain, ia akan menggesa bahawa tiada kebenaran;
2. Borang ditutup lebih cepat daripada skrip dilaksanakan, dan ingatan masih tidak dikeluarkanSelepas pengubahsuaian, skrip akhir adalah seperti berikut: