我将大量图片加载到我的网站,如果我有耐心,它会正常工作。但有时我会在图像加载过程中用myDiv.style.display = 'none';
触发一个动作,然后图像得到width = height = 0,因为所有图像都没有完成。当我再次看到div时,我看不到它们,但通过搜索width = height = 0来识别。
如果我将宽度和高度设置为大于0的值,我会看到图像,但这样我就失去了实际尺寸。我还尝试通过添加类似myImage.src += "?t=random";
的内容来更改image.src。这样做,myImage.onload
函数再次被触发,但宽度和高度仍为0。
如何获得图像的实际大小或如何强制重新加载?
答案 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;