在加载完成之前将div设置为不可见之后,图像宽度和高度为0

时间:2014-08-01 16:59:34

标签: javascript html image reload interruption

我将大量图片加载到我的网站,如果我有耐心,它会正常工作。但有时我会在图像加载过程中用myDiv.style.display = 'none';触发一个动作,然后图像得到width = height = 0,因为所有图像都没有完成。当我再次看到div时,我看不到它们,但通过搜索width = height = 0来识别。

如果我将宽度和高度设置为大于0的值,我会看到图像,但这样我就失去了实际尺寸。我还尝试通过添加类似myImage.src += "?t=random";的内容来更改image.src。这样做,myImage.onload函数再次被触发,但宽度和高度仍为0。

如何获得图像的实际大小或如何强制重新加载?

2 个答案:

答案 0 :(得分:1)

您可以将事件附加到图像元素:

image.onload = function () { /* Your code here */ };

实际加载图像时会触发。

在设置src元素并确保src实际有效之前,请确保附加了此事件。您可以在Google Chrome的“网络”面板中查看此内容(Windows上的F12)。

答案 1 :(得分:0)

深入了解一下我发现了解决方法。

第一次加载图像时,它具有有效的宽度和高度,但由于div不可见而不会被绘制。当我再次显示div并通过更改像myImage.src+="?t=random"这样的图像URL来启动重新加载时,image.onload会被图像宽度和高度0触发。所以我能做的就是保存原始文件值,并在需要时使用它们。

// save or reload image size in case of load interruption if (typeof this.orgWidth == 'undefined' && this.width>0) this.orgWidth = this.width; if (typeof this.orgHeight == 'undefined' && this.height>0) this.orgHeight = this.height; if (this.width==0) this.width=this.orgWidth; if (this.height==0) this.height=this.orgHeight;