Ни Microsoft documentation, ни W3C documentation не упоминают утечку.свойство ячеек утечки памяти в Internet Explorer?
Это происходит на динамически создаваемых строках. Это проблема для нас, поскольку у нас есть одностраничное веб-приложение с таблицами, регулярно обновляемыми через ajax, и, в конечном итоге, iexplore потребляет всю память и Windows.
Для воспроизведения:
function process() {
var row = document.createElement('tr');
var cell = document.createElement('td');
var text = document.createTextNode();
// doesn't matter order of these lines:
row.appendChild(cell);
cell.appendChild(text);
// this leaks on IE8/9:
var x = row.cells;
// this alternative doesn't:
//var x = row.getElementsByTagName("td");
setTimeout(process, 10);
}
process();
http://jsfiddle.net/5wzW2/1/ (jsfiddle сайт не работает на IE8, следовательно, разместить код, указанный выше).
Watch Mem Usage for iexplore каждый раз поднимается вокруг MB в диспетчере задач. Не работает в FF18/Chrome24.
Любые идеи, почему, или что с ним можно сделать?
Microsoft's bug reporting page, похоже, сломан. Моим обходным решением является замена .cells
на .getElementsByTagName("td")
, например. в плагине tablesorter.