Ticket #1727: memLeak.htm

File memLeak.htm, 1.2 kB (added by schallm, 2 years ago)

Example of IE removeChild leak and possible workaround

Line 
1<html>
2<head>
3<title>Leak tester</title>
4<script language="javascript">
5        var spans = [];
6        function add_onClick() {
7                for (var i = 0; i < 100; ++i) {
8                        var span = document.createElement("span");
9                        span.appendChild(document.createTextNode(i));
10                        document.body.appendChild(span);
11                        spans.push(span);
12                }
13        }
14        function removeChild_onClick() {
15                while (spans.length) {
16                        document.body.removeChild(spans[0]);
17                        spans.shift();
18                }
19        }
20        function discardElement_onClick() {
21                while (spans.length) {
22                        discardElement(spans[0]);
23                        spans.shift();
24                }
25        }
26        function discardElement(element) {
27                var garbageBin = document.getElementById('IELeakGarbageBin');
28                if (!garbageBin) {
29                        garbageBin = document.createElement('DIV');
30                        garbageBin.id = 'IELeakGarbageBin';
31                        garbageBin.style.display = 'none';
32                        document.body.appendChild(garbageBin);
33                }
34                // move the element to the garbage bin
35                garbageBin.appendChild(element);
36                garbageBin.innerHTML = '';
37        }       
38</script>
39</head>
40<body>
41        <button onclick="add_onClick()">Add</button>
42        <button onclick="removeChild_onClick()">Remove with removeChild</button>
43        <button onclick="discardElement_onClick()">Remove with discardElement</button>
44</body>
45</html>
46