Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Anthony от 17 Ноября 2006, 15:40:47

Название: Удаление таблиц
Отправлено: Anthony от 17 Ноября 2006, 15:40:47
К вопросу об утечке памяти в ИЕ.

Как правильно удалять таблицу, а точнее tbody таблицы?

Сначала делал так:
var mTbl = document.getElementById(tableId);
var tbl_body = mTbl.tBodies[0];
mTbl.removeChild(tbl_body);


Но если верить программке Drip (http://outofhanwell.com/ieleak/index.php?title=Main_Page), да и просто в task manager-е видно, что нифига память не освобождается после удаления tbody.

Попробовал сделать так, но толку мало, все равно не освобождается память:
function garbage(tBodyObj)
{
while(tBodyObj.firstChild)
{
var trow = tBodyObj.firstChild;
while(trow.firstChild)
{
var cell = trow.firstChild;
trow.removeChild(cell);
cell = null;
}
tBodyObj.removeChild(trow);
trow = null;
}
}

var mTbl = document.getElementById(tableId);
var tbl_body = mTbl.tBodies[0];

garbage(tbl_body);
mTbl.removeChild(tbl_body);
tbl_body = null;


Может есть более "правильные" варианты?
Название: Удаление таблиц
Отправлено: Anthony от 21 Ноября 2006, 15:50:54
На форуме dklab подсказали. Кроче, вместо appendChild и removeChild, которые я использовал для создания и удаления строк и ячеек таблицы, нужно использовать insertRow, insertCell, deleteCell, deleteRow. Тогда память в ИЕ не засоряется.