我有一个应用程序,它使用 DataTables jQuery 库在我的目标浏览器 IE8 中呈现内容。问题是当我推送一个要渲染的大数组时,IE8 有时会抛出臭名昭著的长时间运行脚本错误。
在分析应用程序后,似乎是在以下代码中调用 __fnAddData 导致了问题:
if (bUsePassedData) {
for (var i = 0, len = oInit.aaData.length; i < len; i++) {
_fnAddData(oSettings, oInit.aaData[i]);
}
} else if (oSettings.bDeferLoading ||
(oSettings.sAjaxSource === null && oSettings.ajax === null)) {
_fnAddTr(oSettings, $(oSettings.nTBody).children('tr'));
}
我在四处寻找解决方案,看到 Nicholas Zakas 在这里写的以及大量其他解决方案,如果 for 循环不在 if else if “块”内,这些解决方案将起作用。当我第一次尝试将它包装在 setTimeout 函数中时,它当然不起作用,因为 if else if 的第二部分解析为 true。
(oSettings.sAjaxSource === null && oSettings.ajax === null) // true
对此有什么好的解决方案?提前致谢。