使用基于皮肤的favicon.ico

时间:2014-04-14 03:44:45

标签: php asp.net-mvc favicon

我有一个应用程序,我有两个版本,这两个版本使用不同的皮肤。我的问题是我需要根据使用的皮肤改变图标。

在我的应用程序根文件夹中,只有一个皮肤的一个图标。

对于第2个favicon,我在index.php中使用了路径,如

<html>
<head> 
  <link href="images/skin2/favicon.ico" rel="SHORTCUT ICON"/>
</head>
</html>

它可以很好地渲染第二层皮肤的图标,但是当我使用Ctrl + F5刷新页面时,第一层皮肤的图标会被渲染到位于根目录中。

请告诉我解决这个问题的一些解决方案....

3 个答案:

答案 0 :(得分:0)

Firefox可能正在缓存favicon。

尝试

  1. 将查询字符串附加到favicon名称的末尾

    <link href="images/skin2/favicon.ico?v=2" rel="SHORTCUT ICON" />

  2. 检查以确保可以访问favicon。转到URL并强制刷新。

    • http://mydomain/images/skin2/favicon.ico
    • Ctrl + F5
  3. 重命名favicon文件。

答案 1 :(得分:0)

使用url重写从php或asp.net检索favicon.ico。

您可以禁用缓存并检索活动皮肤的正确图标。

RewriteRule ^favicon.ico favicon.php [L]

然后在favicon.php中返回正确的版本

<?php
    // add cache control headers here
    header('Content-type: image/x-icon');
    echo file_get_contents("path-to-skin-icon");
?>

答案 2 :(得分:0)

我做了一些技巧并且工作正常,在这里分享可能会帮助其他人

<script>
var faviconFolderName = "skin3";
if(skinName == "skin1")
{
    faviconFolderName = "skin1";
}else if(skinName == "skin2"){
    faviconFolderName = "skin2";
}

$(window).load(function () {
    $('head').append('<link href="images/'+faviconFolderName+'/favicon.ico" rel="shortcut icon" type="image/x-icon" />');
  });