Doe ik iets geks in de volgende code waardoor IE (6+7) flink memory gaan leaken? Of is hier een workaround voor? (dit is overigens een testcase, voordat jullie vragen wat het voor nut heeft om zulke divs in de DOM te gooien). De leak stopt als ik filter:alpha verwijder.
Elke keer als er een div aangemaakt wordt die transparant is hapt ie zo een 8 mb aan ram weg (de hoeveelheid hangt samen met de grootte van de div). Erger nog, als ik ze weer verwijder krijg ik mn ram niet meer terug.
Pas bij een page refresh krijg ik het ram weer vrij.
Je kunt de code zo copy pasten in een .html file en testen in ie6/7.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="description" content="" /> <meta name="keywords" content="" /> <title>Leak test IE</title> </head> <body> <script type="text/javascript"> Leak = { init:function(e) { var btn = document.getElementById("leak"); btn.style.cursor = "pointer"; btn.onclick = Leak.now; var release = document.getElementById("leakRelease"); release.style.cursor = "pointer"; release.onclick = Leak.release; }, now:function(e) { var el = document.createElement("div"); el.className = "leak"; el.style.backgroundColor = "red"; el.style.height = "256px"; el.style.width = "8096px"; el.style.top = "10px"; el.style.left = "128px"; el.style.filter = "alpha(opacity=30)"; var btn = document.getElementById("leak"); btn.parentNode.appendChild(el); }, release:function(e) { var elements = document.getElementsByTagName("div"); for(var i=elements.length;i>=0;i--) { if (elements[i] && elements[i].className == "leak") { elements[i].parentNode.removeChild(elements[i]); } } } } window.onload = Leak.init; </script> <div id="leak">ME HUNGRY BROWSER!!! GIVE ME SOME MORE MEMORY!! HAARRRR</div> <div id="leakRelease">PUKE ME SOME MEMORY!</div> </body> </html> |
Elke keer als er een div aangemaakt wordt die transparant is hapt ie zo een 8 mb aan ram weg (de hoeveelheid hangt samen met de grootte van de div). Erger nog, als ik ze weer verwijder krijg ik mn ram niet meer terug.
Je kunt de code zo copy pasten in een .html file en testen in ie6/7.
[ Voor 0% gewijzigd door BtM909 op 30-08-2007 11:04 ]