Recientemente participé en el desarrollo de un proyecto, y dado que el proyecto es una aplicación FAT Client (RIA) basada en el navegador, hay muchos iframes en la página. Las pruebas posteriores encontraron que la memoria del navegador siempre ha sido alta, y cuanto más se abre las páginas de iframe, mayor es el uso de la memoria, que es especialmente obvio en los navegadores de la serie IE. Incluso si todas las páginas de iframe abiertas están cerradas, el uso de la memoria no ha disminuido significativamente. IE El navegador se queda muy atascado cuando el uso de la memoria alcanza unos 400 m. El análisis encontró que el iframe no se liberó, por lo que se lanzó la memoria ocupada por todos los iframes cerrados. Aunque no se puede liberar por completo, el uso de la memoria de iframe no continuará creciendo, y el uso de la memoria de toda la aplicación se controla a alrededor de 150 m.
/** * Crear dinámicamente un iframe * @param DOM Crear un contenedor iframe, es decir, crear un iframe en el DOM. El DOM puede ser un Div, Span u otra etiqueta. * @param src PAGE PATERA ABIERTA EN IFRAME* @param Onload Este evento se activa después de cargar el iframe, que puede estar vacío* @return devuelve el objeto IFRAME creado*/function createiFrame (dom, src, onload) {// create en el documento var if iframe = document.createElement ("iframe"); // establecer el estilo de iframe iframe.style.width = '100%'; iframe.style.height = '100%'; iframe.style.margin = '0'; iframe.style.padding = '0'; iframe.style.overflow = 'Hidden'; iframe.style.border = 'Ninguno'; // enlace el evento Onload de iframe if (onload && object.prototype.tostring.call (onload) === '[función de objeto]') {if (iframe.attachevent) {iframe.attachevent ('onload', onload); } else if (iframe.addeventListener) {iframe.addeventListener ('load', onload); } else {iframe.onload = onload; }} iframe.src = src; // Cargar el iframe en DOM.AppendChild (iframe); devolver iframe; } /*** Destruya el iframe y libera la memoria ocupada por el iframe. * @param iframe El objeto iframe que necesita ser destruido*/function destruyeiFrame (iframe) {// señala el iframe a una página en blanco, que puede liberar la mayor parte de la memoria. iframe.src = 'sobre: en blanco'; intente {iframe.contentwindow.document.write (''); iframe.contentwindow.document.clear (); } catch (e) {} // eliminar iframe de la página iframe.parentnode.removechild (iframe); }