Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 图像(img)标记返回404和默认图像_Javascript_Html_Jquery_Ajax - Fatal编程技术网

Javascript 图像(img)标记返回404和默认图像

Javascript 图像(img)标记返回404和默认图像,javascript,html,jquery,ajax,Javascript,Html,Jquery,Ajax,我的图像标签 $('img').on('error', function() { $(this).attr('src', 'http://i.giphy.com/9J7tdYltWyXIY.gif'); // show a fallback image if there is an error }); 及 我猜youtube已经返回了默认的404图像,这可能是一个原因。您忘记扩展名文件了吗 https://placeimg.com/200/300/animals.jpg 试

我的图像标签

$('img').on('error', function() {
    $(this).attr('src', 'http://i.giphy.com/9J7tdYltWyXIY.gif');    // show a fallback image if there is an error
});



我猜youtube已经返回了默认的404图像,这可能是一个原因。

您忘记扩展名文件了吗

https://placeimg.com/200/300/animals.jpg
试试这个

<img src="http://example.com/non-existent-image.jpg" onerror="this.onerror=null;this.src='https://placeimg.com/200/300/animals6';" />

YouTube answers不会启动onerror()函数,因为YouTube发送的图像显示灰色视频图标。知道返回映像的维度的方法是检测它并用备份映像替换它。尝试运行下面的代码段:

$(函数(){
$('.youtube thumb')。每个(函数(ix,it){

如果($(it)[0]。自然高度可以澄清吗?您是否询问如何检测返回回退图像而不是实际缩略图的youtube?可能YT拦截了对不存在资源的GET请求,并且图像被其“404图像”替换。加载前是否尝试过对图像进行HEAD调用?如果不存在404 HttpCode响应,则应获得404 HttpCode响应,并有机会加载您自己的图像。YT对此URL使用404状态代码进行响应,但由于它在响应中也发送了实际图像,因此浏览器似乎会显示图像,而不是触发错误提示ler.列出了错误处理程序应该触发的几种情况,但其中甚至没有提到HTTP状态代码(尽管该列表并不声称是独占的)看起来这些资源也没有启用CORS,这意味着客户端的头请求可能也不起作用,那么您必须在服务器端执行此检查。@ChrisG是的,在我的页面中我显示了youtube缩略图,一些缩略图返回404和默认缩略图()是一个返回具有特定类别和维度的占位符图像的网站。它是一个端点,而不是特定的文件。不需要为文件名添加扩展名category@satriaikhsan谢谢你的建议。但是运气不好…@KarolPawlak truewhoa如果你不想依赖于维度,还有另一种方法,知道图像ret使用404状态,您可以对其进行base64编码并保存字符串。然后将每个传入的图像与此字符串进行比较,以检查它是“不存在的图像占位符”还是您期望的图像。我没有想到其他任何东西,因为您需要在客户端(JS)上实现简单快速的解决方案将数千张图像中的每一张编码为base64,比较并在客户端显示非404图像。你不认为这很苛刻吗?当然。这只是另一种方式,从来没有说过这是最好的:)唯一“合适的”这样做和处理错误的方法是使用YouTube API,但在您的情况下,如果您只想修改客户端,则不可能。
https://placeimg.com/200/300/animals.jpg
<img src="http://example.com/non-existent-image.jpg" onerror="this.onerror=null;this.src='https://placeimg.com/200/300/animals6';" />