如果不以"image/x-icon"的格式提供,IE无法在HTML中显示.ico图标。

5
我将展示网站的图标列表,使用<img />元素。

有些网站会像这样提供它们:
<link rel="icon" type="image/x-icon" href="favicon.ico" />

有些人将它们用作:

<link rel="shortcut icon" href="favicon.ico" />

IE 无法显示那些没有 type="image/x-icon" 的网站图标。
我无法控制网站提供的图标,那么我能从我的方面做些什么呢?


3
你到底想做什么? - Esteban Küber
那么你想让它像“关于”页面一样工作吗?http://stackoverflow.com/about(在底部为版主) - random
你能展示一个无法显示网站图标的例子吗? - random
<img src="http://www.sfist.com/favicon.ico" alt="" /> - vsync
3个回答

2

将以下内容放入您的Apache配置文件或.htaccess文件中:

AddType image/x-icon .ico

2
我认为最好的做法是将它们转换成另一种格式。如果您手动显示图标,则可以下载每个图标,使用图像处理程序进行转换,然后上传到您的网站。
如果您正在自动执行此操作,则需要查看服务器端提供的任何图像处理工具。如果您正在使用PHP,则可以使用GDImageMagick库。例如,只需转换为PNG格式,并在您的网站上缓存它。
如果IE不能内联显示.ico文件,则不太可能能够在不进行某种处理的情况下显示它。在最简单的级别上,您可以只读取外部图像并将其作为正确的mime类型提供,而无需转换它们。

我同意 - 这比试图让浏览器(尤其是非IE浏览器)在IMG中显示ICO要好得多。 - Eli Krupitsky
非IE浏览器总是正确显示它们。我在.NET上:(它们都是动态加载的,可能有成千上万个。我知道PHP的GD,并考虑过它,但对于这么简单的事情来说,工作量太大了。感谢您的帮助! - vsync
我确定 .net 有一些处理图像的函数。但是你应该能够简单地使用不同的 Mime 类型提供文件而无需转换。 - DisgruntledGoat
@DisgruntledGoat - 我该怎么做? - vsync
3
我不确定在 .net 中具体怎么做,但你需要一个带有图标文件参数的脚本。该脚本将设置一个“image/x-icon”的头,然后读取传入的文件并简单地输出它。在 PHP 中,你只需使用 header 函数和 curl_exec。也许值得针对 .net 提出一个单独的问题。 - DisgruntledGoat

0

不幸的是,似乎不能解决我的问题。在我的链接列表中,IE无法显示所有的favicon.ico ( http://www.jerbils.info/wxlinks.php ) ,而所有其他浏览器都可以(即它们会显示所有存在的favicon.ico)。有趣的是,如果我在IE中手动显示一个域名的favicon.ico,那些在IE中未显示但在所有其他浏览器中显示的图标将显示为文本内容而不是图像。这意味着IE对这些文件不喜欢,因此它生成了一个onerror条件,导致显示默认图标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接