J'ai récemment participé au développement d'un projet, et comme le projet est une application FAT Client (RIA) basée sur un navigateur, il y a beaucoup d'IFRames dans la page. Des tests ultérieurs ont révélé que la mémoire du navigateur a toujours été élevée, et plus il s'ouvre de pages iframe, plus l'utilisation de la mémoire est particulièrement évidente dans les navigateurs de la série IE. Même si toutes les pages d'iframe ouvertes sont fermées, l'utilisation de la mémoire n'a pas diminué de manière significative. IE Le navigateur devient très coincé lorsque l'utilisation de la mémoire atteint environ 400 m. L'analyse a révélé que l'IFRAME n'a pas été publiée, donc la mémoire occupée par tous les iframes fermées a été publiée. Bien qu'il ne puisse pas être complètement libéré, l'utilisation de la mémoire IFRAME ne continuera pas à croître et l'utilisation de la mémoire de l'ensemble de l'application est contrôlée à environ 150 m.
/ ** * Créez dynamiquement un iframe * @param dom Créer un conteneur iframe, c'est-à-dire créer un iframe dans le dom. Le DOM peut être une div, une portée ou une autre balise. * @Param Src Web Page Chemin ouvert dans iframe * @param onload Cet événement est déclenché après le chargement de l'IFRAME, qui peut être vide * @return renvoie l'objet iframe créé * / fonction CreateIframe (dom, src, onload) {// create iframe dans le document var iframe = document.createElement ("iframe"); // Définissez le style d'iframe iframe.style.width = '100%'; iframe.style.height = '100%'; iframe.style.margin = '0'; iframe.style.padding = '0'; iframe.style.overflow = 'Hidden'; iframe.style.border = 'Aucun'; // liant l'événement onload de iframe if (onload && object.prototype.toString.call (onload) === '[fonction objet]') {if (iframe.attachevent) {iframe.attachevent ('onload', onload); } else if (iframe.addeventListener) {iframe.addeventListener ('Load', onload); } else {iframe.onload = onload; }} iframe.src = src; // Chargez l'Iframe dans dom.appendChild (iframe); return iframe; } / ** * Détruisez l'iframe et relâchez la mémoire occupée par l'Iframe. * @param iframe l'objet iframe qui doit être détruit * / fonction destreframe (iframe) {// pointer l'Iframe vers une page vierge, ce qui peut libérer la majeure partie de la mémoire. iframe.src = 'À propos: blanc'; essayez {iframe.contentwindow.document.write (''); iframe.contentwindow.Document.Clear (); } catch (e) {} // supprimer iframe de la page iframe.parentNode.RemoveChild (iframe); }