我已经编写了一个应用程序,以便在使用 IE Mobile 的设备上离线使用(使用 Google Gears)。这些设备正在经历内存泄漏,导致设备随着时间的推移变得无法使用。
问题页面从本地 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";
}
这会以任何方式构成循环引用吗?
杰克