gpt4 book ai didi

javascript - 支持事件的图像预加载器javascript

转载 作者:数据小太阳 更新时间:2023-10-29 04:22:17 27 4
gpt4 key购买 nike

我正在尝试查找图像预加载器脚本。

虽然我找到了一些,但它们都不支持预加载完成时触发的事件。

有谁知道可以执行此操作的任何脚本或 jQuery 插件吗?

希望这个问题适用于 stackoverflow - 如果不适用,请随时将其删除。

最佳答案

这是一个函数,它将从数组中预加载图像并在最后一个完成时调用您的回调:

function preloadImages(srcs, imgs, callback) {
var img;
var remaining = srcs.length;
for (var i = 0; i < srcs.length; i++) {
img = new Image();
img.onload = function() {
--remaining;
if (remaining <= 0) {
callback();
}
};
img.src = srcs[i];
imgs.push(img);
}
}

// then to call it, you would use this
var imageSrcs = ["src1", "src2", "src3", "src4"];
var images = [];

preloadImages(imageSrcs, images, myFunction);

由于我们现在处于使用 promises 进行异步操作的时代,这里有一个使用 promises 并通过 ES6 标准 promise 通知调用者的版本:

function preloadImages(srcs) {
function loadImage(src) {
return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = function() {
resolve(img);
};
img.onerror = img.onabort = function() {
reject(src);
};
img.src = src;
});
}
var promises = [];
for (var i = 0; i < srcs.length; i++) {
promises.push(loadImage(srcs[i]));
}
return Promise.all(promises);
}

preloadImages(["src1", "src2", "src3", "src4"]).then(function(imgs) {
// all images are loaded now and in the array imgs
}, function(errImg) {
// at least one image failed to load
});

而且,这是一个使用 2015 jQuery promises 的版本:

function preloadImages(srcs) {
function loadImage(src) {
return new $.Deferred(function(def) {
var img = new Image();
img.onload = function() {
def.resolve(img);
};
img.onerror = img.onabort = function() {
def.reject(src);
};
img.src = src;
}).promise();
}
var promises = [];
for (var i = 0; i < srcs.length; i++) {
promises.push(loadImage(srcs[i]));
}
return $.when.apply($, promises).then(function() {
// return results as a simple array rather than as separate arguments
return Array.prototype.slice.call(arguments);
});
}

preloadImages(["src1", "src2", "src3", "src4"]).then(function(imgs) {
// all images are loaded now and in the array imgs
}, function(errImg) {
// at least one image failed to load
});

关于javascript - 支持事件的图像预加载器javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264528/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com