我只是不能为我的生活弄清楚这个在Internet Explorer中的内存泄漏。Javascript内存泄漏/性能问题?
insertTags
simple需要字符串str
,并将每个单词放在HTML的开始和结束标记(通常是锚定标记)中。 transliterate
代表阿拉伯数字,用&#代替正常数字0-9。他们的阿拉伯同行的XML身份。
fragment = document.createDocumentFragment();
for (i = 0, e = response.verses.length; i < e; i++)
{
fragment.appendChild((function(){
p = document.createElement('p');
p.setAttribute('lang', (response.unicode) ? 'ar' : 'en');
p.innerHTML = ((response.unicode) ? (response.surah + ':' + (i+1)).transliterate() : response.surah + ':' + (i+1)) + ' ' + insertTags(response.verses[i], '<a href="#" onclick="window.popup(this);return false;" class="match">', '</a>');
try { return p } finally { p = null; }
})());
}
params[0].appendChild(fragment);
fragment = null;
我会爱比MSDN和about.com其他一些链接,因为他们都没有,为什么我的脚本发生内存泄漏已充分向我解释。我相信这是问题,因为没有它,所有的东西都运行得很快(但没有任何显示)。
我读过,做大量的DOM操作可能是危险的,但for循环最多286次(古兰经2中最古老的surah中的#节)。
*内存泄漏在IE7和IE8,不知道6,但在Safari 4的工作完全正常,FF 3.6,歌剧10.5,Chrome的5 ... *
不知道你使用的是什么IE版本,但是我过去使用IE7有性能问题。在IE8/FF/Chrome上使用相同的代码很快,但IE7不太喜欢遍历DOM – 2010-05-31 02:03:21