Rumah > hujung hadapan web > tutorial js > Penyelesaian kepada masalah memori objek IFrame tidak dikeluarkan dalam kemahiran browser_javascript IE

Penyelesaian kepada masalah memori objek IFrame tidak dikeluarkan dalam kemahiran browser_javascript IE

WBOY
Lepaskan: 2016-05-16 16:39:07
asal
1760 orang telah melayarinya

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>
Salin selepas log masuk
Tetapi semasa ujian, saya mendapati dua had:

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 dikeluarkan

Selepas pengubahsuaian, skrip akhir adalah seperti berikut:

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan