如何监控图像源的完全加载状态
How to monitor an image source for fully loaded status
我正在将大量图像加载到动态div中,并且我正在使用预加载器来获取图像。
imageObj = new Image();
imageObj.src = imgpath + imgname;
这些事件中的每一个都创建了一个GET,我可以在Firebug中看到并监视它。
如果我知道图像的名称和路径,我可以查看相关的XMLHttpRequest以查看GET是否已经完成吗?
我不想在这个过程中依赖(或使用).onload事件。
pseudo应该是这样的…
if (imageObj.GET = 'complete')
有人有过这样的经历吗?
编辑1
感谢Bart的帮助(见下文),我已经改变了我的图像预加载器来存储图像对象的数组…
function imagePreLoader(imgname) {
images[imgnum] = new Image();
images[imgnum].src = imgpath + imgname;// load the image
imgnum ++;
}
然后,在运行了所有其他函数来构建内容div之后,我在下面使用了image.complete属性…
var interval = setInterval(function () {
imgcount = imgnum - 1; // because the imgnum counter ++ after src is called.
ok = 1;
for (i=0; i<imgcount; i++) {
if (images[i].complete == false){
ok = 0;
}
}
if (ok == 1) {
clearInterval(interval);
showIndexOnLoad();
}
}, 1000);
这等待直到所有的图像都完成,只有当我从间隔函数得到'ok'时才触发showIndexOnLoad()
函数。
所有图像现在都按我想要的方式显示,所有图像都同时显示,而不需要额外等待get赶上。
做得好,Bart,让我使用image.complete属性。
您可以观察图像的complete
属性,以查看图像是否已完全加载。
下面是一个例子。
http://jsfiddle.net/t3esV/1/function load (source) {
var img = new Image();
img.src = source;
console.log('Loading ' + source);
var interval = setInterval(function () {
if (img.complete) {
clearInterval(interval);
complete(img);
}
}, 400);
};
function complete(img) {
console.log('Loaded', img.src);
document.body.appendChild(img);
};
备注:当出现异常且complete
未设置为true
时,此示例无法清除间隔
image.complete
属性。 这是一个非常有趣的问题,恐怕没有实际的解决方案。图像的load
事件是当图像正在渲染并且浏览器知道它的宽度和高度时。
您需要的是一个标签适用的readystatechange
事件。遗憾的是,只有IE允许您将这些元素绑定到非文档元素,所以这不是一个选项。
还有很多插件可以让你绕过它。其中一个非常热门的是https://github.com/desandro/imagesloaded,它具有非常有效地处理所有浏览器差异的额外优势。然而,它仍然依赖于load
事件(我很确定这是开始做你想做的事情的唯一方法)。
- ui路由器的惰性加载状态
- 在加载状态之前,我需要在angular js中为每个状态添加角色
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 表现出承诺'加载状态
- mediaelement.js/html5视频在前进过多或后退过多时永远保持加载状态
- Chrome应用程序:无法检索文件加载状态
- 将复选框重置为基于先前复选框的页面加载状态's状态
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 引导手风琴.保留多个面板的页面加载状态
- 如何检测发布商 DFP 广告的 Google 双击的加载状态
- Angularjs ng-repeat中的Angleularjs按钮加载状态指令
- Redux-管理预加载状态
- p:fileDownload的策略,带有对话框和加载状态
- Knockout模板在某些情况下保持加载状态
- 当AJAX调用完成时重置Bootstrap加载状态按钮
- 刷新页面后在jtree中从加载状态返回数据
- 如何摆脱这个{{用户.Id}}(花括号)在页面处于加载状态时使用
- Ui-router加载状态,然后我怎么运行一个函数
- 如何显示加载状态的百分比ajax响应
- 如何监控图像源的完全加载状态