低版本IE瀏覽器iframe記憶體不釋放問題

admin發表於2017-03-28

在一些低版本的IE瀏覽器中,當用open()函式開啟一個視窗的時候,如果這個視窗中有使用iframe引入其他頁面,儘管開啟的視窗被關閉,但是iframe引入頁面的記憶體也不會釋放,下面就分享一段能夠解決此問題的程式碼。

程式碼如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html><html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
function unloadHandler(notip){
  // 取消視窗關閉時的監聽事件
  document.getElementsByTagName("body")[0].onbeforeunload = null;
  var el = document.getElementById("scanIf");
  if(el){
    el.src = "";
    setTimeout(cycleClear, 100);
    return "提示:請點選取消按鈕,當前視窗會自動關閉。";
  }
  return true;
}
 
function cycleClear(){
  try {
    var el = document.getElementById("scanIf");
    if(el){
      el.contentWindow.document.write('');
      el.contentWindow.document.clear();
      var p = el.parentNode;
      p.removeChild(el);
    }
    window.close();
  } 
  catch (e) {
    setTimeout(cycleClear, 100);
  }
}
window.onload=function(){
  window.onbeforeunload=function(){
    return unloadHandler();
  }
}
</script>
</head>
<body>
<iframe id="scanIf" width="800px" height="600px" src = "http://www.softwhy.com"></iframe>
</body>
</HTML>

相關文章