我正在加载一组图像并使用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毫秒的时间延迟后显示所有图像。
答案 0 :(得分:0)
您可以使用load事件
$(window).on('load', function(){ // ... });
或者,快捷方式
$(window).load(function(){ // ... });
而不是$(document).ready
,load
事件在所有图像完全加载后触发。此外,如果需要,您可以同时使用ready
和load
,ready
事件将在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不同。