404图像的后备

时间:2014-01-29 18:02:18

标签: javascript image .htaccess http-status-code-404

我每天都会使用PHP自动为联盟网站导入多个XML-feeds(Tradetracker,Daisycon等)。饲料包含来自各种商店的产品。

除了图像外,一切都像魅力一样。 Feed中的图像只是与提供商的图像热链接。这适用于大多数情况,但有时(由于各种原因)图像不再存在,受热链接保护,更改等等。这导致浏览器中“找不到图像”,这不会好看。

我尝试使用htaccess来解决这个问题,但无论出于何种原因,它都不起作用。我用谷歌搜索并尝试了几个htacces“脚本”,但没有一个没有成功。我也在图像URL中尝试过JS,但这并不适用。我更喜欢htaccess。

有人有建议吗?

使用htaccess替换图片

RewriteEngine on
<FilesMatch ".(jpg|png|gif)$">
ErrorDocument 404 "/noimage.jpg"
</FilesMatch>

使用JS

<img src="image.jpg" onerror="this.onerror=null;this.src='default.jpg'">

更新:工作版

<script type="text/javascript"> 
   jQuery(window).load(function() { 
      jQuery("img").each(function(){ 
         var image = jQuery(this);             
         if(image.context.naturalWidth == 0 ||
         image.readyState == 'uninitialized'){    
            jQuery(image).unbind("error").attr(
                "src", "noimage.jpg"
            ); 
         } 
    }); 
}); 
</script>

1 个答案:

答案 0 :(得分:5)

jQuery支持图像的错误事件 - 我不确定为什么你的内联示例不起作用,但是如何:

$('img').on('error', function() {
    $(this).attr('src', 'default.jpg');
});

这也具有不需要添加到每个元素的优点。如果您的图片处于热链接状态,则.htaccess解决方案无效,因为这些图片无法从您的网站投放。