我有一个 html5 应用程序,它在启动时加载一些数据,并且在加载完之后,用户可以浏览这些数据。与每个数据对象相关联的是一个图像,一个 png 文件。这将在带宽有限的移动设备上运行良好。当用户浏览数据时,会显示图像,用户体验是图像的显示延迟,因为从服务器加载这些图像需要一些时间。
所以,我想预加载图像,以便在用户浏览数据时立即显示它们。因此,我有一个循环遍历所有数据并为每个图像执行这段代码:
preloadImage: function(url)
{
if(url)
{
// preload image
if (document.images) {
var img1 = new Image();
img1.src = url;
}
}
}
这是一种相当直接的方法。
我有几百张图片要加载。这在大多数情况下都很有效。
问题
当我在装有 Android 4.1.2 的三星 Galaxy SIII 上进行测试时,我得到了
"RangeError: Maximum call stack size exceeded".
我在大约 20-30 个 preloadImage 调用后得到了这个。我的猜测是,Android html/javascript 引擎对一次可能挂起的异步调用数量存在某种限制。
我在 PC(IE9、Chrome、Firefox)和任何 Apple 设备上都没有这个问题。
这个问题的任何启示,提示或解决方案?