0

我正在使用 Ajax 从数据库中提取数据,并使用图像元素动态填充 div 标记。图像文件名对应数据库中的数据。

例如,如果数据库中有一个名为“foo”的东西,我就有一个名为“img/foo.jpg”的项目

如果 'img/foo.jpg' 设置类,然后将其写入正确的 div,我的 javascript 会提取数据并使用 src 创建一个图像。

在大多数情况下,这可以按预期工作,但偶尔会在刷新时(我让它查询数据库,清除所有 div,并每 30 秒重写一次节点),有时某些图像会中断/不加载。没有押韵或理由是哪一个,有时它不会发生,有时会发生几个。

如果您右键单击 -> 显示图像,手动刷新,或等待它再次拉取数据,它会按预期显示图像。因此,我知道数据正在被正确地提取和写入,并且似乎无法加载图像。

有谁知道为什么或如何解决这个问题?

4

2 回答 2

0

在 Firefox 中尝试使用 Firebug 插件,启用 Net 面板,您可能会看到获取图像失败的原因。

于 2009-09-16T16:14:18.097 回答
0

抱歉,如果这不是一个好的答案,但是如果您的页面上有很多图像,则可能是浏览器(并且不仅限于 IE6)没有下载所有图像的数据。

如果您“清除所有 div,并每 30 秒重写一次节点”,您可能会遇到 Microsoft 支持问题“如何配置 Internet Explorer 以同时下载两个以上的文件? ”所暗示的问题。您可能注意到正在下载的图像。

您可能会发现串行更新图像更可靠,而不是一起重新下载所有图像(并行):

var refreshCount = 0;
function updateImages() {
  var nextImage = refreshCount % document.images.length;
  var image = document.images[nextImage];
  if(image.complete) {
    var newImage = new Image();
    newImage.src = image.src;           
    image.parentNode.insertBefore(newImage,image);
    image.parentNode.removeChild(image);
    refreshCount++;
  }
  setTimeout(updateImages, 1000);
}
// Wait 20 sec before starting the refreshes 
// (gives time to get the images downloaded in the first place)
setTimeout(updateImages, 20000);    
于 2011-11-24T11:24:26.180 回答