您目前已離線,請等候您的網際網路重新連線

循環參考上的 HTML 網頁的 DOM 物件會造成記憶體遺漏

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:830555
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。
徵狀
當您重新整理使用包含物件在 [Microsoft 網際網路總管文件物件模型 (DOM) 的循環參考的 Microsoft JScript 程式碼的 HTML 網頁時,就會發生記憶體遺漏。
發生的原因
DOM 物件是未 JScript 物件,就會發生這個記憶體流失的現象發生。DOM 物件不是 JScript 的標記和跨越回收配置。因此,DOM 物件與 JScript 處理常式之間循環的參考將不會中斷直到瀏覽器完全 tears 在頁面上向下。當瀏覽器會開啟新的 Web 網頁,或當關閉瀏覽器視窗時,將會結束這個記憶體流失的現象發生。
解決方案
如果要解決這個問題,避免循環參考 Jscript 程式碼中的網際網路檔案總管 DOM 物件。若要暫時解決這個問題在範例程式碼包含在本文 < 其他相關資訊 > 一節中,請下列變更: 使用這項變更的
function hookup(element){    element.attachEvent( "onmouseover", mouse);}function mouse () {}
滑鼠 函式不是通往循環參照的終止物件。
狀況說明
Microsoft 已確認這是在 < 適用於 > 一節中所列出的 Microsoft 產品中有錯誤。
其他相關資訊

重現這個問題的步驟

  1. 在 [記事本] 中, 貼上下列程式碼,然後將檔案儲存成 Test.htm:
    <HTML><HEAD><script language="javascript">function initpage(){window.setTimeout("window.location.reload()", 500, "javascript");}</script></HEAD><body onload="initpage()" ><div class='menu' id='menu'></div><script language='javascript'>hookup(document.getElementById('menu'));function hookup(element){element.attachEvent( "onmouseover", mouse);	function mouse () 	{	}}</script></body></HTML>
    這段程式碼中處理常式 (滑鼠 函式) 在巢狀 attacher (連結 函式)。這種排列方式表示,處理常式已關閉對呼叫端 (這種排列方式命名結案 」) 的範圍。這個處理常式會維護變數項目的參考。在這種情況下變數項目是與設定為 功能表ID 參數之 div HTML 項目。但 div 項目參照到這個處理常式。此參考是循環參考。
  2. 在 Internet Explorer 中開啟 Test.htm。

    請注意記憶體使用量 Windows 工作管理員] 中持續增加每次頁面重新整理本身。
参考
如需有關 Internet Explorer 遺漏模式的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:

警告:本文為自動翻譯

內容

文章識別碼:830555 - 最後檢閱時間:11/02/2007 06:47:16 - 修訂: 3.4

Microsoft Internet Explorer (Programming) 6.0, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 5.01

  • kbmt kbfix kbbug KB830555 KbMtzh
意見反應