2011-08-05 88 views
0

如果找不到图像,有没有办法显示图像占位符?我有通过自动Feed加载的图像,对于某些项目图像在那里,但对于一些项目没有。所以,如果图像不存在,我想显示占位符。如果未找到图像,javascript不显示图像占位符

谢谢

^h

+0

这真的取决于你如何通过JavaScript加载图像。例如,如果您使用从服务器返回的JSON数据,则可以检查图像url是否为空,并将其设置为另一个“已知”(默认)url。 –

回答

1

我找到了答案here

这段代码的伟大工程!

function onImgErrorSmall(source) 
{ 
source.src = "/images/no-image-100px.gif"; 
// disable onerror to prevent endless loop 
source.onerror = ""; 
return true; 
} 

然后调用它像这样:

<img src="/images/19013_small.jpg" alt="" onerror="onImgErrorSmall(this)" /> 
+0

或者你可以做一个$(源).remove()来避免这个其他图像的额外http请求 –

0

试试这个:如果图像存在

var tester=new Image() 
    tester.onload=function() {createPlaceHolderForImage(); } 
    tester.onerror=function() {handleError(); } 
    tester.src="http://www.temp.com/image.jpg" 

的onload函数被调用,否则的HandleError是使用jQuery的一个样本称为

+0

不确定哪种形式的Feed正在使用,但只需确保在尝试加载之前将错误事件附加到图像。如果在后端完成集成,则可能需要将src URL包含在“src”以外的属性中。然后,通过JS,您可以附加错误事件,然后将src url插入到src属性中。祝你好运! :) – Dygerati

+0

这只是示例代码来演示如何解决这个问题。我不是说这是最好的方法:P – blejzz

0

这里,这也可以在JavaScript中完成:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("img").each(function(){ 
     var imgObj = $(this); 
     var img = new Image(); 
     img.onerror=function(){ imgObj.attr('src','placeholder.gif'); } 
     img.src = imgObj.attr('src'); 
    }); 
}); 
</script> 
<ul> 
<li><img src="blah.gif" /></li> 
<li><img src="blah.png" /></li> 
<li><img src="http://www.google.com/intl/en_com/images/srpr/logo2w.png" /></li> 
</ul> 

该代码将遍历每个图像并检查它是否存在。如果它不存在,则将其替换为“placeholder.gif”图像。

+0

我似乎目前正在编辑帖子,但您可以在http://jsfiddle.net/Z7EbP/ – RobB

+0

上看到一个工作示例。谢谢。虽然我不允许使用jQuery。 –

相关问题