Я написал приложение для использования в автономном режиме (с Google Gears) на устройствах, использующих IE Mobile. Устройства испытывают утечки памяти с такой скоростью, что устройство со временем перестает работать.
Страница проблемы извлекает записи из локальной базы данных Gears и отображает таблицу каждой записи со ссылкой в последнем столбце каждой строки, чтобы открыть запись (ссылка просто onclick = "open ('myID')") , Когда они закончили с записью, они возвращаются в таблицу, которая отображается повторно. Похоже, проблема заключается в повторном построении этой таблицы. В основном события onclick.
Таблица генерируется по существу так:
var tmp="";
for (var i=0; i<100; i++){
tmp+="<tr><td>row "+i+"</td><td><a href=\"#\" id=\"LINK-"+i+"\""+
" onclick=\"afunction();return false;\">link</a></td></tr>";
}
document.getElementById('view').innerHTML = "<table>"+tmp+"</table>";
Я ознакомился с распространенными причинами утечек памяти и попытался установить событие onclick для каждой ссылки на «null» перед повторным рендерингом таблицы, но, похоже, утечка все равно произошла.
У кого-нибудь есть идеи?
Если это имеет значение, функция, вызываемая из каждой ссылки, выглядит следующим образом:
function afunction(){
document.getElementById('view').style.display="none";
}
Будет ли это каким-либо образом круговой ссылкой?
Джейк