المراجع المعادة لكائنات DOM في صفحة HTML تؤدي إلى حدوث تسرب الذاكرة

الخطأ رقم: 28355 (IEOESE)

الأعراض

حدوث تسرب لذاكرة عند تحديث صفحة HTML الذي يستخدم Microsoft JScript البرمجية التي تحتوي على مراجع دائرية للكائنات في Microsoft Internet Explorer مستند طراز كائن (DOM).

السبب

حدوث تسرب للذاكرة هذه نظراً لكائنات DOM كائنات غير JScript. كائنات DOM غير موجودة في نظام جمع البيانات المهملة علامة وكنس في JScript. ولذلك، مرجع دائري بين كائنات DOM ومعالجات JScript لن المقطوعة حتى الدموع المستعرض تماما أسفل الصفحة. سيتم إنهاء هذا حدوث تسرب للذاكرة عند فتح المستعرض صفحة ويب جديدة أو عند إغلاق إطار المستعرض.

الحل

لحل هذه المشكلة، تجنب المراجع المعادة لكائنات DOM مستكشف الإنترنت في التعليمة البرمجية Jscript. لإيجاد حل بديل لهذه المشكلة في نموذج التعليمات البرمجية المضمنة في قسم "مزيد من المعلومات" من هذه المقالة، إجراء التغيير التالي:
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>
    في هذه التعليمة البرمجية المعالج (وظيفة الماوس ) متداخلة أتاتشير (وظيفة عملية التوصيل ). يعني هذا الترتيب أن يتم إغلاق المعالج عبر النطاق المتصل (يسمى هذا الترتيب "إغلاق"). المعالج بالمحافظة على مرجع إلى عنصر المتغير. في هذه الحالة، العنصر المتغير هو العنصر div HTML باستخدام المعلمة ID تعيين إلى القائمة. ولكن يشير إلى المعالج عنصر div . هذا المرجع مرجع معاد.
  2. افتح الملف اختبار.htm في Internet Explorer.

    لاحظ أن يستمر استخدام الذاكرة في إدارة مهام Windows لزيادة كل مرة يتم تحديث الصفحة نفسها.

المراجع

لمزيد من المعلومات حول أنماط تسرب Internet Explorer، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
خصائص

رقم الموضوع: 830555 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات