【问题标题】:Check image HTTP status codes using jQuery/JS?使用 jQuery/JS 检查图像 HTTP 状态代码?
【发布时间】:2012-12-22 23:51:32
【问题描述】:

是否可以使用 jQuery/JS 检查图片的状态码?

例如,

img1 = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg";

if(statusCheck(img1) == 404){
    /do something
}elseif(statusCheck(img1) == 403){
    //do something else
}elseif(statusCheck(img1) == 304){
    //do something else
}

谢谢

【问题讨论】:

  • 您打算何时以及如何下载此类图片?
  • 您可以尝试使用 XMLHTTPRequest 完成此操作,但您必须注意大多数网站不允许跨域请求(并且有充分的理由!)

标签: javascript jquery http http-headers


【解决方案1】:

你可以构造一个Image对象,不受跨域限制:

var image = new Image();
image.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg"

image.onload = function() {
    alert('Image has loaded');
};

image.onerror = function() {
    alert('Image did not load');
};

图像加载是异步的,因此创建一个返回错误代码的函数不是一个好主意。

演示:http://jsfiddle.net/Blender/apyL7/

此外,似乎没有办法获取响应代码,因此您只能知道图像是否已加载。

【讨论】:

  • 谢谢,所以您是说无法检索 http 状态代码?例如 304 与 200 不同,尽管它们都可以加载。
  • 被移除、隐藏和移动的 Flickr 图片怎么办? Flickr 不会物理删除它们,而是通过 301 通知图像已被永久移动。试试这个:farm9.static.flickr.com/8521/8619601616_b4ba28c3b0_z.jpg(它坏了,但仍然加载并触发了 'load' 事件)。
猜你喜欢
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 2014-10-13
  • 2010-12-26
  • 1970-01-01
  • 2012-12-13
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多