favicon适用于除谷歌浏览器以外的所有浏览器

时间:2016-04-08 23:20:38

标签: asp.net google-chrome browser favicon

我使用C#以编程方式从ASP.NET生成favicon,除了Chrome之外,它在所有浏览器中都能正常工作。

我将页面传递给方法SetFavIcon并使用HtmlLink类设置它,该类是System.Web.UI.HtmlControls命名空间的一部分。这就是我的做法;

public static void SetFavIcon(Page p)
    {
        HtmlLink link = new HtmlLink();
        link.Attributes.Add("type", "image/'x-icon");
        link.Attributes.Add("rel", "shortcut icon");
        link.Attributes.Add("href", HttpContext.Current.Request.Url.Authority + "/_graphics/_icons/favicon.ico");
        p.Header.Controls.Add(link);
    }

我尝试了几个选项,例如更改类型,在favicon.ico之后添加查询字符串,但无法弄清楚为什么它只发生在Chrome中(在Internet Explorer,Mozilla Firefox和Microsoft Edge中正常工作)

我正在测试最新版本的Google Chrome - 版本49.0.2623.112 m

1 个答案:

答案 0 :(得分:0)

检查网页的整个<head>部分,查找非标题标记(divp等)。例如:

<html>
  <head>
    <title>My page</title>
    <div>This div has nothing to do here!!</div>
    <link rel="shortcut icon" href="/favicon.ico">
  </head>
  <body>
    ...
  </body>
</html>

与Firefox或IE不同,当Chrome在标题中遇到非标题标记时,它认为它已结束并假设这是正文的开头。由于link标记与正文无关,因此Chrome会忽略错误的非标题标记后出现的所有链接。因此,在上面的示例中,title有效(它位于div之前)但不是link