ฉันเพิ่งเข้าร่วมในการพัฒนาโครงการและเนื่องจากโครงการเป็นแอปพลิเคชัน FAT Client (RIA) ที่ใช้เบราว์เซอร์ (RIA) จึงมี iFrames จำนวนมากในหน้า การทดสอบในภายหลังพบว่าหน่วยความจำเบราว์เซอร์นั้นสูงเสมอและยิ่งหน้า iframe เปิดมากเท่าไหร่การใช้หน่วยความจำที่มากขึ้นซึ่งเห็นได้ชัดโดยเฉพาะอย่างยิ่งในเบราว์เซอร์ซีรี่ส์ IE แม้ว่าหน้า iframe ที่เปิดอยู่ทั้งหมดจะถูกปิด แต่การใช้หน่วยความจำก็ไม่ได้ลดลงอย่างมีนัยสำคัญ IE เบราว์เซอร์ติดอยู่มากเมื่อการใช้หน่วยความจำถึงประมาณ 400 เมตร การวิเคราะห์พบว่า IFRAME ไม่ได้ถูกปล่อยออกมาดังนั้นหน่วยความจำที่ถูกครอบครองโดย IFRames ที่ปิดทั้งหมดถูกปล่อยออกมา แม้ว่าจะไม่สามารถปล่อยออกมาได้อย่างสมบูรณ์ แต่การใช้หน่วยความจำ IFRAME จะไม่เติบโตต่อไปและการใช้หน่วยความจำของแอปพลิเคชันทั้งหมดจะถูกควบคุมที่ประมาณ 150 เมตร
/** * สร้าง iframe * @param dom แบบไดนามิกแบบไดนามิกสร้างคอนเทนเนอร์ iframe นั่นคือสร้าง iframe ใน DOM DOM สามารถเป็น div, span หรือ tag อื่น ๆ * @param src หน้าเว็บพา ธ ที่เปิดใน iframe* @param onload เหตุการณ์นี้จะถูกเรียกใช้หลังจาก iframe ถูกโหลดซึ่งสามารถว่างเปล่า* @return ส่งคืนวัตถุ iframe ที่สร้างขึ้น*/ฟังก์ชั่น createiframe (dom, src, onload) {// สร้าง iframe ในเอกสาร varrame = document.create // ตั้งค่าสไตล์ของ iframe iframe.style.width = '100%'; iframe.style.height = '100%'; iframe.style.margin = '0'; iframe.style.padding = '0'; iframe.style.overflow = 'ซ่อน'; iframe.style.border = 'ไม่มี'; // การเชื่อมโยงเหตุการณ์ onLoad ของ iframe if (onload && object.prototype.toString.call (onLoad) === '[ฟังก์ชั่นวัตถุ]') {ถ้า (iframe.attachevent) {iframe.attachevent ('onload', onload); } อื่นถ้า (iframe.addeventListener) {iframe.addeVentListener ('โหลด', onLoad); } else {iframe.onload = onLoad; }} iframe.src = src; // โหลด iframe ลงใน dom.appendchild (iframe); ส่งคืน iframe; } /*** ทำลาย iframe และปล่อยหน่วยความจำที่ครอบครองโดย iframe * @param iframe วัตถุ iframe ที่ต้องถูกทำลาย*/function destioniframe (iframe) {// ชี้ iframe ไปยังหน้าว่างซึ่งสามารถเพิ่มหน่วยความจำส่วนใหญ่ได้ iframe.src = 'เกี่ยวกับ: blank'; ลอง {iframe.contentwindow.document.write (''); iframe.contentwindow.document.clear (); } catch (e) {} // ลบ iframe ออกจากหน้า iframe.parentNode.removeChild (iframe); -