IE下面向ActiveX对象的Javascript编程内存泄露问题

IE ActiveX对象开发时的注意事项:

今天翻犀牛书第五版,在154页专门提到了IE下内存泄露的问题。提供的参考网址已经无法访问了,地址如下:

http://msdn.microsoft.com/zh-cn/library/bb250448(v=VS.85).aspx

 

循环引用Dom对象时就会造成此问题,参考例子:

<html>

<head>

<script language=”JScript”>

 

var myGlobalObject;

 

function SetupLeak()

{

// 首先把页面元素赋值给变量

myGlobalObject =

document.getElementById(“LeakedDiv”);

 

// 接着把变量赋值给页面元素的属性,这样形成一个循环引用

document.getElementById(“LeakedDiv”).expandoProperty =

myGlobalObject;

}

 

 

function BreakLeak()

{

document.getElementById(“LeakedDiv”).expandoProperty =

null;

}

</script>

</head>

 

<body onload=”SetupLeak()” onunload=”BreakLeak()”>

<div id=”LeakedDiv”></div>

</body>

</html>

 

近年来越来越多人采用JS的面相对象开发,这种情况下不太严谨的码农极易犯此错误。所以如果你开发的应用中涉及到ActiveX的话一定要小心的处理。