?????IE????????й??????
???????????? ???????[ 2014/7/7 13:51:25 ] ???????????й? web????
???????????????DOM????????JS??????????????????????????IE???????????????IE6?У????? javascript object?????jscript??????mark-and-sweep??????????javascript object????object(????native object??vbscript object???)?????????IE 6????????????????????????IE 6????????Script Objects???Circular References?????????????????????????????JScript??Native Object(????Dom??ActiveX Object)????Circular References????????????????Native????(????Dom??ActiveX Object)??Javascript???????????????????й?????????????????????bug??IE 7???????????????Fuck?????????Drip???????????????IE8???????????????????????????
function Encapsulator(element){
this.elementReference = element;
element.expandoProperty = this;
}
function SetupLeak2(){
var obj=new Encapsulator(document.getElementById("test"));
document.body.removeChild(document.getElementById("test"));
//alert(document.getElementById("test").expandoProperty); ???????
//?????element.expandoProperty ---> obj??????????????
//?????obj.elementReference??element??????????????
//?????????IE6??element?????????棬???????????????GC??????????????????????
document.body.appendChild(obj.elementReference);
}
|
???????????????????????????????????????????????????????????????????????????дjs????????????????к????????漲?????????????????????????????????????????????????????IE?μ????й?????????????????????
var test=function(){
var div=document.getElementById("test");
var i=0;
while((i++) < 20){
(function(index){
var o=document.createElement("p");
o.innerHTML="AAA";
o.onclick=function(){
alert("haha??leap");
}
div.appendChild(o);
o.onclick=null;
div.removeChild(o);
})(i);
}
}
function addEvent(){
var div=document.getElementById("event");
div.onclick=function(){
this.parentNode.removeChild(this);
}
}
|
???????????γ??????????????????????????????ж?????????div????????????????????????????д???????棬????????test?????? ?棬??????removeChild?????Drip????????????й??????????????onclick?????????null????С??????????????У????? ??????????????removeChild????????????????????й???
????????????????DOM?????????script????????????ο????????????createElement????DOM? ?????????????????в?????js????document.createElement(“<div onclick=’foo();’>”)???????????????IE????Ч???????????????????Drip???????????й???
????var leakMemory=function(){
????for(i = 0; i < 5000; i++){
????var parentDiv = document.createElement("<div onClick='foo()'>");
????}
????}
???????????????????′?????DOM??????????????????????????????????????????????????????????й? ?????????????????????Щ?????????????????Щ????£????????DOM???????????DOM?????????????????У????????????????? ????reflow??????????????????????????????????????~
???????
???????????????????Drip??????????????????????sIEVE??JS Leaps Detector?2????????????й???????????????????????????????????????????????????????????д?????У?????????????????? Щ????????????????й???????????
??????????????????????????????????~~
??????

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11