如何检查网站上是否找到图像?

Bac*_*cko 7 ruby ruby-on-rails image ruby-on-rails-3 web

我正在使用Ruby on Rails v3.0.9,我想检查一个图像(在我的情况下是一个favicon.ico图标图像)是否从网站成功检索到,如果不是,我想显示一个自定义图像.

为了检索favicon.ico与网站相关的图像,在我的视图文件中,我有:

image_tag "#{web_site.link}/favicon.ico", :size => "16x16"
Run Code Online (Sandbox Code Playgroud)

其中的web_site.link值类似于以下内容:

http://stackoverflow.com/
http://www.stackoverflow.com/
http://facebook.com/
...
Run Code Online (Sandbox Code Playgroud)

如何检查网站上是否找到图像(可能if ... else ... end在处理图标图像之前使用语句或执行某些HTTP请求)以及如何处理上述场景?

Bri*_*ick 6

以下是如何实现原始问题中的想法.

这种方法的问题在于,您的响应时间将包括其他域响应您的图像请求所需的时间.如果该网站出现问题,那么在请求超时之前,您的网页将无法加载.

<%
img_url = 'http://adomain.com/image.jpg'
res = Net::HTTP.get_response(URI.parse(img_url))
img_url = '[my alternate url]' unless res.code.to_i >= 200 && res.code.to_i < 400 #good codes will be betweem 200 - 399
%>

<%=image_tag img_url%>
Run Code Online (Sandbox Code Playgroud)

jQuery方法涉及更多.我建议以下内容:

  • 创建一个<img>带有透明间隔图像的标签
  • 在页面的javascript中运行$.ajax远程镜像的调用
    • 在成功回调<img>中用远程图像的url 替换'src
    • 在故障回调<img>中用后备图像的url 替换'src

不幸的是,我现在没有时间为此生成确切的代码.