处理多个提交选项时,为了让用户可以自行删除选项, 用javascript处理了一下
事实上这样并没有真正的删除表单项,提交以后还是删除以前的数量
removeChild只是从Dom树中移除。这个变量还是存在的,要过一段时间才会被浏览器回收。
二直接用 tb.deleteRow(i); 这里是真的删除了 //tb是个table
Ext的做法
ie的问题就是,不会回收被remove的node,虽然这个node已经没有任何js对象在直接或间接的引用到它。对应的解决方案就是把node扔到一个div里(嘿嘿,这个div就是ie的垃圾回收箱),然后把其innerHTML清空。
当然,按照MS的人的说法,这个不是一个真正的memory leak,因为你刷新页面时是会释放这些对象的。但是ajax程序如果是长时间驻留在一个页面,并且动态增删许多节点,那累积起来的结果确实够惨。
function delfile(f_no){
if(confirm('确认删除所选择订单?')){
document.getElementById('f_'+f_no).removeChild;
document.getElementById('f_'+f_no).style.display ='none';
}
}
事实上这样并没有真正的删除表单项,提交以后还是删除以前的数量
removeChild只是从Dom树中移除。这个变量还是存在的,要过一段时间才会被浏览器回收。
二直接用 tb.deleteRow(i); 这里是真的删除了 //tb是个table
Ext的做法
removeNode : isIE ? function(){
var d;
return function(n){
if(n && n.tagName != 'BODY'){
d = d || document.createElement('div');
d.appendChild(n);
d.innerHTML = '';
}
}
}() : function(n){
if(n && n.parentNode && n.tagName != 'BODY'){
n.parentNode.removeChild(n);
}
},
ie的问题就是,不会回收被remove的node,虽然这个node已经没有任何js对象在直接或间接的引用到它。对应的解决方案就是把node扔到一个div里(嘿嘿,这个div就是ie的垃圾回收箱),然后把其innerHTML清空。
当然,按照MS的人的说法,这个不是一个真正的memory leak,因为你刷新页面时是会释放这些对象的。但是ajax程序如果是长时间驻留在一个页面,并且动态增删许多节点,那累积起来的结果确实够惨。