使用jQuery修改样式时可以捕获http错误吗?

时间:2013-09-03 13:22:49

标签: javascript jquery error-handling

如果我使用jQuery设置页面的背景图像,如下所示:

$('body').css({
    "background-image": 'url(' + myImageUrl + ')'
});

如何检测和处理可能从图片网址返回的HTTP错误(500,503,404等)?

我确实找到了一个注册回调的jQuery .error()方法,但它在1.8中被标记为已弃用,并没有指示应该替换它的内容。 (我也似乎无法让它工作,不推荐或不推荐。)


根据评论和下面的答案,我尝试了这种变化,它似乎有效,但答案是降低选票。这有什么不好的原因吗?

$('<img>').error(function(obj) {
    alert('error');
}).load(function() {
    $('body').css({
        "background-image": 'url(' + myImageUrl + ')'
    });
}).attr('src', myImageUrl);

1 个答案:

答案 0 :(得分:0)

试试这个

的jQuery

Live Demo

var $image = $("<img />");
$image.on("error",function() { 
  $('body').css({
    "background-image": 'url(defaultimage.jpg)'
  });
}).on("load",function() {
  $('body').css({
    "background-image": 'url(' + myImageUrl + ')'
  });
}).attr("src",myImageUrl);

JavaScript的:

var image = new Image();
image.onerror=function() { 
  document.body.style.backgroundImage="url(defaultimage.jpg)"
}
image.onload=function() {
  document.body.style.backgroundImage="url("+myImageUrl+")"
}
image.src=myImageUrl;