欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iframe如何動態(tài)創(chuàng)建及釋放其所占內(nèi)存

 更新時(shí)間:2014年09月03日 08:41:40   投稿:whsnow  
一個(gè)項(xiàng)目后期測試發(fā)現(xiàn)瀏覽器內(nèi)存一直居高不下,而且打開iframe頁面越多內(nèi)存占用越大,在IE系列瀏覽器中尤其明顯,下面與大家分享下iframe動態(tài)創(chuàng)建及釋放內(nèi)存

最近參與一個(gè)項(xiàng)目的開發(fā),由于項(xiàng)目是基于瀏覽器的胖客戶端(RIA)應(yīng)用程序,頁面中大量調(diào)用iframe。后期測試發(fā)現(xiàn)瀏覽器內(nèi)存一直居高不下,而且打開iframe頁面越多內(nèi)存占用越大,在IE系列瀏覽器中尤其明顯。所有打開的iframe頁面即使關(guān)閉了,內(nèi)存使用也沒有明顯的下降,IE瀏覽器在內(nèi)存占用達(dá)到400M左右就變得很卡。分析發(fā)現(xiàn)是iframe沒有釋放造成的,于是對所有已關(guān)閉的iframe所占用的內(nèi)存進(jìn)行釋放,雖然不能完全釋放,但是iframe內(nèi)存占用量不會一直增長,整個(gè)應(yīng)用內(nèi)存使用量控制在150M左右。

/** 
* 動態(tài)創(chuàng)建iframe 
* @param dom 創(chuàng)建iframe的容器,即在dom中創(chuàng)建iframe。dom可以是div、span或者其他標(biāo)簽。 
* @param src iframe中打開的網(wǎng)頁路徑 
* @param onload iframe加載完后觸發(fā)該事件,可以為空 
* @return 返回創(chuàng)建的iframe對象 
*/ 
function createIframe(dom, src, onload){ 
//在document中創(chuàng)建iframe 
var iframe = document.createElement("iframe"); 

//設(shè)置iframe的樣式 
iframe.style.width = '100%'; 
iframe.style.height = '100%'; 
iframe.style.margin = '0'; 
iframe.style.padding = '0'; 
iframe.style.overflow = 'hidden'; 
iframe.style.border = 'none'; 

//綁定iframe的onload事件 
if(onload && Object.prototype.toString.call(onload) === '[object Function]'){ 
if(iframe.attachEvent){ 
iframe.attachEvent('onload', onload); 
}else if(iframe.addEventListener){ 
iframe.addEventListener('load', onload); 
}else{ 
iframe.onload = onload; 
} 
} 

iframe.src = src; 
//把iframe加載到dom下面 
dom.appendChild(iframe); 
return iframe; 
} 

/** 
* 銷毀iframe,釋放iframe所占用的內(nèi)存。 
* @param iframe 需要銷毀的iframe對象 
*/ 
function destroyIframe(iframe){ 
//把iframe指向空白頁面,這樣可以釋放大部分內(nèi)存。 
iframe.src = 'about:blank'; 
try{ 
iframe.contentWindow.document.write(''); 
iframe.contentWindow.document.clear(); 
}catch(e){} 
//把iframe從頁面移除 
iframe.parentNode.removeChild(iframe); 
}

相關(guān)文章

最新評論