场景:预加载图片
我正在考虑做以下事情:
function ajaxCallback(results) {
/* snip insert into dom code */
$(".waitForLoad").each(function() {
imageLoadingCount++;
$(this).load(imageLoaded);
});
}
var imageLoadingCount = 0;
function imageLoaded() {
imageLoadingCount--;
if (imageLoadingCount == 0)
HideLoadingScreen();
}
我不太确定浏览器DOM和javascript之间的交互。在开始加载图像之前,DOM是否等待javascript完成执行?我担心可能的竞争条件。
答案 0 :(得分:0)
Javascript应与加载并行运行,除非您使用所有与AJAX请求的连接。浏览器在javascript运行时仍能正常运行,这是它背后的重点。
答案 1 :(得分:0)
load事件观察器有点可怕,因为只有在元素完全加载之前设置它才会起作用,如果你设置它之后什么也不会发生。因此,它实际上取决于你何时调用ajaxCallback()。我建议使用onSuccess而不是onComplete。
另外,我想知道是否可以在$(“。waitForLoad”)本身上使用load事件观察器?
答案 2 :(得分:0)
您可以安全地在$ .ready()中执行ajaxCallback并解决大多数问题。请注意,不会为新创建的标记更新DOM。
另请注意 - HTTP / 1.1规范建议浏览器每个主机名并行下载不超过两个组件。如果您从多个主机名提供图像,则可以同时进行两次以下的下载。
在许多情况下,如果您显示加载屏幕超过一两秒,用户将会感到恼火。等待图像加载并不是一个好主意。