Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测图像链接何时返回404,但它';这仍然是一个有效的图像_Javascript_Http Status Code 404_Thumbnails - Fatal编程技术网

Javascript 如何检测图像链接何时返回404,但它';这仍然是一个有效的图像

Javascript 如何检测图像链接何时返回404,但它';这仍然是一个有效的图像,javascript,http-status-code-404,thumbnails,Javascript,Http Status Code 404,Thumbnails,Youtube为不存在的缩略图返回404,但它也返回有效的图像数据(断开的视频缩略图),因此使用图像检查它不起作用,onerror不被调用: var img = new Image(); img.onload = function() { alert("found")}; img.onerror = function() { alert("not found") }; img.src = "http://img.youtube.com/vi/aaaa/1.jpg"; 运行时,它会显示“已找到”

Youtube为不存在的缩略图返回404,但它也返回有效的图像数据(断开的视频缩略图),因此使用图像检查它不起作用,onerror不被调用:

var img = new Image();
img.onload = function() { alert("found")};
img.onerror = function() { alert("not found") };
img.src = "http://img.youtube.com/vi/aaaa/1.jpg";
运行时,它会显示“已找到”。有没有办法检测404是否可以实际加载图像数据


如果能够检测到链接返回标准的youtube“断开的视频”缩略图数据,这也很好。

作为一种粗略但有效的解决方法,在这种情况下,我建议在加载时检查图像的大小。通常缩略图较大,因此如果返回的图像是120x90px,则可以假定它是404图像


唯一的另一种方法是通过PHP脚本加载,该脚本可以在通过图像之前检查HTTP头。

您可以通过HTTP头加载,但这将花费您往返的时间。附言您可以通过http响应代码404和内容类型image/jpeg来识别它。@Marvin Smit:但是我必须向youtube发出AJAX请求,不是吗?因为我需要youtube图像的标题,而不是当前文档的标题。我不能向youtube发送ajax请求,因为有相同的源站策略限制。只有在您能够控制“Access control Allow origin”(访问控制允许源站)标题的情况下才有可能,这可能是额外的往返行程旁边的一个无选项,这可能非常昂贵。这很遗憾,但我认为您是对的。我刚刚尝试过这样的方法:但它导致了一个跨域错误:/