我每天都会使用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>
答案 0 :(得分:5)
jQuery支持图像的错误事件 - 我不确定为什么你的内联示例不起作用,但是如何:
$('img').on('error', function() {
$(this).attr('src', 'default.jpg');
});
这也具有不需要添加到每个元素的优点。如果您的图片处于热链接状态,则.htaccess解决方案无效,因为这些图片无法从您的网站投放。