我有一个函数,我将 img src 值作为参数,我想做的是检查该图像是否加载了 200 ok 或 404/其他错误。如果它得到 200 ok,那么我想将带有该 src 的 img 标签注入到 DOM 中(我认为在检查期间,它也会被加载到浏览器缓存中,并将 img 标签注入到 DOM 中会从缓存中加载它) . 我尝试了一个简单的代码片段,如下所示:
function checkImage(src)
{
var img = new Image(),
tag = '<img src="'+src+'" />',
alt = '<span>sorry,image broken</span>';
img.onload = function(){
$('.some-container').html(tag);
};
img.onerror = function(){
$('.some-container').html(alt);
};
img.src = src;
}
它在 chrome 中运行良好,但在 firefox 和 ie 中运行良好(无论图像加载正常还是损坏,它们都只触发错误事件)。我没有使用 onload 和 onerror,而是使用 jquery 进行了尝试,例如:
$(img).load(...).error(...).attr('src',url);
$(img).on('load',...).on('error',...).attr('src',url);
$('<img />').load(...).error(...).attr('src',url);
$('<img />').on('load',...).on('error',...).attr('src',url);
甚至尝试了desandro(https://github.com/desandro/imagesloaded)的jquery.imagesLoaded插件,例如:
$(img).imagesLoaded().done(...).fail(...);
$(img).imagesLoaded().progress(function(instance,image){
image.isLoaded?alert('loaded'):alert('broken');
});
$('<img />').imagesLoaded().done(...).fail(...).attr('src',url);
$('<img />').imagesLoaded().progress(function(instance,image){
image.isLoaded?alert('loaded'):alert('broken');
});
我还尝试了以下解决方案:
https://groups.google.com/forum/#!topic/jquery-dev/7uarey2lDh8
但事实证明,可以在 chrome 中工作,但不能在 FF 或 IE 中工作,是否有任何解决方案可以检查内存中存在但“DOM”中不存在的图像?提前致谢。