javascript – 如何使用预加载器和多个图像显示加载状态?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用预加载器和多个图像显示加载状态?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1739字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何使用预加载器和多个图像显示加载状态?](/upload/InfoBanner/zyjiaocheng/701/fbddf9220d0e46b1afc59591cec7bb70.jpg)
我正在构建一个包含几百个图像的幻灯片,并希望构建一个漂亮的加载栏,因此我们的想法是使用JavaScript预加载图像,然后初始化UI的其余部分.
预加载图像不是问题,而是让浏览器在加载时更新状态.我尝试过一些东西,但浏览器只会在显示完成后再重新显示.
我甚至尝试过this question的脚本,但是得到了相同的结果.
这是我到目前为止所得到的(imgList是一个文件名数组.我使用的是Prototype.)
var imageBuf = []
var loadCount = 0
$('loadStatus').update("0/"+imgList.length)
function init() {
imgList.each(function(element){
imageBuf[element] = new Image()
//imageBuf[element].onload = window.setTimeout("count()",0) // gives "not implemented" error in IE
imageBuf[element].onload = function(){count()}
imageBuf[element].src = "thumbs/"+element
})
}
function count() {
loadCount++
$('loadStatus').update(loadCount+"/"+imgList.length)
}
init()
解决方法:
尝试使用my answer to this question中的功能:
function incrementallyProcess(workerCallback, data, chunkSize, timeout, completionCallback) {
var itemIndex = 0;
(function() {
var remainingDataLength = (data.length - itemIndex);
var currentChunkSize = (remainingDataLength >= chunkSize) ? chunkSize : remainingDataLength;
if(itemIndex < data.length) {
while(currentChunkSize--) {
workerCallback(data[itemIndex++]);
}
setTimeout(arguments.callee, timeout);
} else if(completionCallback) {
completionCallback();
}
})();
}
// here we are using the above function to take
// a short break every time we load an image
function init() {
incrementallyProcess(function(element) {
imageBuf[element] = new Image();
imageBuf[element].onload = function(){count()};
imageBuf[element].src = "thumbs/"+element;
}, imgList, 1, 250, function() {
alert("done loading");
});
}
您可能希望修改块大小参数以及超时的长度,以使其行为与您希望的一样.我不是100%确定这对你有用,但值得一试……
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用预加载器和多个图像显示加载状态?全部内容,希望文章能够帮你解决javascript – 如何使用预加载器和多个图像显示加载状态?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。