如何强制ie11申请新的图标?

时间:2015-04-02 03:35:56

标签: html internet-explorer-11 browser-cache favicon

我正在开发一个网站,根据登录的用户详细信息更改其图标。控制器在后端处理此请求并为网站发送相应的图标。到目前为止,我通过以下方式避免了大多数浏览器缓存的favicon:

<link rel="shortcut icon" type="image/x-icon" href="resources/favicon.ico?v=${date.time}"/>

然而,favicon仍然在ie11中被缓存。当我打开Netbeans上的调试时,控制器没有收到任何请求。

注意事项:

  1. 进入网站后的第一个图标是有效的。我只是无法取代 它登录后。
  2. 我在地址栏中输入了favicon网址,并返回了正确的图标。
  3. 我一直在四处寻找,但我无法找到解决这个问题的方法。 :其中

4 个答案:

答案 0 :(得分:3)

使用JavaScript更改IE11中的favicon:

HTML

<link rel="icon" type="image/x-icon" href="resources/favicon.ico">

JS

// Chrome allows you to simply tweak the HREF of the LINK tag.
// Firefox appears to require that you remove it and readd it.
function setFavicon(url)
{
    removeFavicon();
    var link=document.createElement('link');
    link.type='image/x-icon';
    link.rel='icon';
    link.href=url;
    document.getElementsByTagName('head')[0].appendChild(link);
    if (window.console) console.log("Set FavIcon URL to " + getFavicon().href);
 }

function removeFavicon()
{
    var links=document.getElementsByTagName('link');
    var head=document.getElementsByTagName('head')[0];
    for(var i=0; i<links.length; i++)
    {
        if(links[i].getAttribute('rel')==='icon'){
             head.removeChild(links[i])
        }         
    }      
}

演示:http://www.enhanceie.com/test/favicon/dynamic.htm

注意:这适用于Chrome,Firefox,IE11 +。它在IE10或更早版本,Opera 12.15或Safari 6.0.5(mac)中不起作用。将此方法与早期浏览器的favicon.ico?v = xxxx方法结合使用。

答案 1 :(得分:1)

您确定它不只是在本地缓存吗?我认为问题是IE11不想寻找新的图标并使用本地缓存的图标。

尝试强制它获取favicon。请参阅Alex的答案: How do I force a favicon refresh

您应该可以按照这些步骤在IE11上的设备上显示新的favicon。

或者,您可以完全重命名favicon,并将新名称与链接标记一起使用。 <link rel="shortcut icon" href="/images/new-favicon-name.ico" />

同一个帖子中另一个巧妙的技巧: How do I force a favicon refresh

使用文件的哈希作为版本保证唯一的名称。

答案 2 :(得分:0)

警告:虽然这个答案(在我看来)是一个很好的建议,但它不适用于IE11

将URL参数添加到常规favicon路径是更新favicon并强制浏览器重新加载它的有用技巧。然而,浏览器和众所周知,在涉及到favicon加载时非常懒惰。所以刷新你的图标通常可能超出额外的URL参数技术的力量。

我建议你试试favicon.js。这个JavaScript库旨在创建动态的favicons,让你做一些非常棒的东西。

答案 3 :(得分:0)

要更改图标并确保显示新的图标而不是旧的图标,一个简单而虚拟的方法是更改图标的名称,你不要必须称之为favicon.ico,称之为any.ico并将通常的代码行放在头部:

&lt;link rel="shortcut icon" href="interdit.ico"&gt; 

并上传ico文件:anything.ico(根据需要更改任何内容)。