最近專案組發現在使用showmodaldialog彈出窗體中如果包含iframe物件,則iframe物件占用的記憶體資源在窗程式設計客棧體關閉後不會釋放。彈出關閉反覆多次後,ie瀏覽器記憶體占用可超過數百m,嚴重時ie瀏覽器報錯,且無法關閉,只能通過殺程序的方式重啟瀏覽器。經測試,使用open方式彈出也存在該問題。
在ie8瀏覽器中,open和showmodaldialog彈出的記憶體占用有差異:
open方式彈出的窗體占用的是乙個獨立的iexplorer.exe程序;
showmodaldialog方式彈出的窗體使用和父窗體相同的iexplorer.exe程序;
經過搜尋,發現解決辦法是在窗體關閉前,從窗體中刪除iframe物件,**如下:
程式設計客棧font-size:18px">
var el = documewww.cppcns.comnt.getelementbyid("scanif");
el.src="";
el.contentwindow.document.write('');
el.contentwindow.document.clear();
var p = el.parentnode;
p.removechild(el);
但是測試的時候,發現有兩個限制:
1. el.src可能還沒有執行完,就執行後面的語句,如果iframe中包含的是跨域內容,則會提示沒有許可權;
2. 窗體關閉的比指令碼執行的快,記憶體仍然沒有釋放;
經過修改,最終指令碼如下:
本文標題: ie瀏覽器iframe物件記憶體不釋放問題解決方法
本文位址:
IE 瀏覽器修復
ie8 瀏覽器經常出現 網頁上的js指令碼錯誤的提示,大多數不影響正常使用,但在開發中這種現象比較難處理,ie瀏覽器安全效能級別高,js指令碼驗證要求比較嚴格,這是我在做專案時遇到的問題。ie9 ie10 ie11 360 firefox 360 sogou瀏覽器上都能正常執行的程式在ie8上就不行...
js 判斷瀏覽器是否IE瀏覽器
蒐羅各種方法來判斷瀏覽器是否為ie瀏覽器 1.最簡單的 來自 if 1,侷限 本判斷方法經過判斷在ie7 ie8 ie8相容模式 在ie9 ie10 ie11 不起作用 解釋 alert 1,2 相當於alert 1,2 tostring 這在ie與非ie上都相同,都會彈出 1,2 alert 1,...
js 判斷瀏覽器是否IE瀏覽器
蒐羅各種方法來判斷瀏覽器是否為ie瀏覽器 1.最簡單的 來自 if 1,侷限 本判斷方法經過判斷在ie7 ie8 ie8相容模式 在ie9 ie10 ie11 不起作用 解釋 alert 1,2 相當於alert 1,2 tostring 這在ie與非ie上都相同,都會彈出 1,2 alert 1,...