Javascript 为什么图像加载不起作用
我意识到这是新手javascript程序员经常问的问题,我也是。Console.log(img)和Console.log(“onload之前”)执行正确,但我从未看到图像加载消息Javascript 为什么图像加载不起作用,javascript,Javascript,我意识到这是新手javascript程序员经常问的问题,我也是。Console.log(img)和Console.log(“onload之前”)执行正确,但我从未看到图像加载消息 AssetManager.loadImages = function(urls) { var images = []; var urlCount = urls.length; for (var i=0; i<urlCount; i++) { var img = new Image()
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];
}
}
AssetManager.loadImages=函数(URL){
var图像=[];
var urlCount=url.length;
对于(var i=0;iTryvar img=document.createElement(“img”);
或
AssetManager.loadImages=函数(URL){
var images=新数组();
var urlCount=url.length;
var urlsoladed=0;
莱姆格变种;
for(变量i=0;i=urlCount){
//回调(图像);-->这仍然是balls
}
}
leImg.src=url[i];
_图像推送(leImg);
}
}
(未经测试,并且喝醉了)我不确定您的代码到底有什么问题,但这里有一些我不久前编写的代码来处理相同的问题(fiddle:)其中有些额外的东西可能是不必要的:)
对于良好的测量加载倍数:
$.preloadImgs = function (urls, callback, to_len) {
var i = 0, c = 0;
for (; i < urls.length; i++) {
c++;
$.preloadImg(urls[i], function (url, timedout) {
if (--c === 0 && i >= urls.length - 1)
callback.call(this, urls);
}, to_len);
}
};
$.preloimgs=函数(URL、回调、到){
变量i=0,c=0;
对于(;i=url.length-1)
callback.call(this,url);
},to_len);
}
};
当嵌套函数中的调用无法正常工作时,您可以尝试通过addEventListener
而不是onload=
您需要在“$().ready(function(){}”或“window.onload=function(){}”中显式调用“img.onload”函数
e、 g
对于任何和我犯同样错误的人,请确保onload是小写的,而不是驼峰大小写:onload
这好:
img.onload = function () { };
这很糟糕:
img.onLoad = function () { };
这可能是一个明显的问题,但您确定图像存在吗?请尝试添加img.onerror=function(){console.log(“图像失败!”);};
哪个浏览器这是在中发生的吗?我猜这是因为图像已经加载并且正在从浏览器缓存中获取。我想我以前见过这种情况。如果浏览器缓存了图像元素,则不会发生图像元素的加载
事件。如果要确保它始终捕获图像,可以添加类似”的内容(新日期())。getTime()
到URL@ogc-尼克:是的,他们有。但只有当他们没有被缓存时,原始问题中有jQuery吗?没有,在哪里。很高兴你花了时间参与;)这可能是一个明显的问题,但你确定图像存在吗?尝试添加img.onerror=function(){console.log(“Image failed!”);};我不想承认这一点,但这是所有回答中的赢家。我一定是弄乱了路径。设置onload后始终设置src,否则您将获得缓存图像的比赛条件
$().ready (function(){
var img = new Image();
img.src = 'image.png';
img.onload = function()
{
console.log("loaded");
}
}
img.onload = function () { };
img.onLoad = function () { };