404图片的备选方案

5

我每天使用PHP自动导入多个XML源(Tradetracker、Daisycon等)到一个联盟网站。这些源包含来自各种商店的产品。

一切都运作得很好,除了图片。源中的图片只是链接到提供者的图片。这在大多数情况下都有效,但有时(由于各种原因)图片不再存在,被保护,已更改等等。这会导致浏览器显示“未找到图像”,看起来不好。

我尝试使用htaccess解决此问题,但出于某种原因,它不起作用。我搜索并尝试了几个htaccess“脚本”,但都没有成功。我还尝试了在图片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>

方便的解决方案,做得好! - OverlappingElvis
1个回答

6

jQuery支持图像的错误事件 - 我不确定为什么你的内联示例无法工作,但是尝试一下:

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

这样做的优点是不需要为每个元素添加。如果您的图片被热链接,那么您的.htaccess解决方案将无法工作,因为这些图片不会从您的网站提供服务。

谢谢您的回答,但我仍然无法让它工作。我在头部中使用了您的代码以及$(document).ready(function()。我尝试了图像的绝对路径。但是src属性没有被替换。 - mat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接