【发布时间】:2023-04-03 11:38:01
【问题描述】:
我意识到这是我的新手 javascript 程序员提出的一个常见问题。 Console.log(img) 和 console.log("before onload") 正确执行,但我从未看到 Image Loaded 消息。
AssetManager.loadImages = function(urls) {
var images = [];
var urlCount = urls.length;
for (var i=0; i<urlCount; i++) {
var img = new Image();
images.push(img);
}
var urlsLoaded = 0;
for (var i=0; i<urlCount; i++) {
(function(img) {
console.log(img);
console.log("before onload");
img.onload = function(e) {
console.log("Image Loaded!");
urlsLoaded++;
if (urlsLoaded >= urlCount) {
AssetManager.callback(images);
}
}
})(images[i]);
images[i].src = urls[i];
}
}
【问题讨论】:
-
这可能是一个显而易见的问题,但您确定图像存在吗?尝试添加
img.onerror = function() {console.log("Image failed!");}; -
发生在哪个浏览器中?
-
我猜这是因为图像已经加载并且正在从浏览器缓存中获取。我想我以前见过这个。
-
图片元素的
load事件如果被浏览器缓存就不会发生。如果您想确保它始终抓取图像,您可以在 URL 中添加"?_=" + (new Date()).getTime()之类的内容 -
@ogc-nick 是的。但前提是它们没有被缓存
标签: javascript