图像readyState总是“加载”

时间:2013-11-15 21:16:15

标签: jquery image complete

我正在加载一组图像并使用jQuery来测试它们何时完成。但是,1图像显示替代文本。我认为没有什么大不了的只是测试错误,但错误永远不会被抛出。经过进一步检查,我发现readyState仍然被认为是“加载”。我不知道怎么解决这个问题。

mycode的

 $(document).ready(function(){
     setTimeout(evalImages,100);
});
$('img').error(function(){ alert('test'); });

function evalImages(){
     var imgCount = $('.myContainer img').length;
     var loaded=0;
     for(var i =0; i < imgCount; i++){
         if($('.myContainer img').get(i).complete){
              loaded++;
         }
     }
     if( loaded >= imgCount){
           ///My other logic here
     }else setTimeout(evalImages,100);
}

只是为了这张图片我打开了我的开发工具并完成了

 $('.myContainer img').get(7).readyState
"loading"

因为它仍在加载,从未完成且从不出错我不知道如何测试这个问题。

更新:我仍然不知道为什么这一张图片没有改变它的readyState而且我很好奇,但作为一种解决方法,我只是在400毫秒的时间延迟后显示所有图像。

2 个答案:

答案 0 :(得分:0)

您可以使用load事件

$(window).on('load', function(){ // ... });

或者,快捷方式

$(window).load(function(){ // ... });

而不是$(document).readyload事件在所有图像完全加载后触发。此外,如果需要,您可以同时使用readyloadready事件将在load之前触发。

答案 1 :(得分:0)

IE9和IE10中存在此错误。 一个简单的解决方法是在将img插入DOM后立即执行虚拟img.readyState读取。

IE9-IE10-STALE-READYSTATE.html
IE9-IE10-STALE-READYSTATE.html?ie9-ie10-fix

IE11显示的错误是用F12调试器模拟IE9,IE10与实际的IE9,IE10不同。