Recentemente, participei do desenvolvimento de um projeto e, como o projeto é um aplicativo FAT Client baseado em navegador (RIA), há muitos iframes na página. Os testes posteriores descobriram que a memória do navegador sempre foi alta e, quanto mais as páginas do IFRame ela abrir, maior o uso da memória, o que é especialmente óbvio nos navegadores da série IE. Mesmo que todas as páginas abertas do iframe estejam fechadas, o uso da memória não diminuiu significativamente. Ou seja, o navegador fica muito preso quando o uso da memória atinge cerca de 400m. A análise constatou que o iframe não foi liberado, portanto a memória ocupada por todos os iframes fechados foi lançada. Embora não possa ser completamente liberado, o uso da memória do IFRAME não continuará a crescer e o uso da memória de todo o aplicativo é controlado em cerca de 150m.
/** * Crie dinamicamente um iframe * @param dom Crie um contêiner iframe, ou seja, crie um iframe no DOM. O DOM pode ser um div, span ou outra tag. * @Param SRC Web Page Path aberto no iframe* @param onLload Este evento é acionado após o carregamento do iframe, que pode estar vazio* @return retornar o objeto iframe criado*/function createiframe (dom, src, onload) {// criar iframe no documento var ifram = document.creatELENTEMment ( // Defina o 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 = 'nenhum'; // vinculando o evento OnLoad do iframe if (OnLoad && Object.prototype.tostring.call (onLload) === '[objeto function]') {if (iframe.attachevent) {iframe.attachevent ('onload', onLoad); } else if (iframe.addeventListener) {iframe.addeventListener ('load', onLload); } else {iframe.onload = onLload; }} iframe.src = src; // carrega o iframe no dom.appendChild (iframe); devolver iframe; } /*** Destrua o iframe e libere a memória ocupada pelo iframe. * @param iframe o objeto iframe que precisa ser destruído*/function DestroyIframe (iframe) {// Aponte o iframe para uma página em branco, que pode liberar a maior parte da memória. iframe.src = 'Sobre: Blank'; tente {iframe.contentWindow.document.write (''); iframe.contentWindow.document.clear (); } catch (e) {} // Remova o iframe da página iframe.parentnode.removeChild (iframe); }