2015-04-02 176 views
1

我正在使用一個網站,根據登錄的用戶詳細信息更改其圖標。控制器在後端處理此請求,併爲該網站發送相應的圖標。到目前爲止,我避開了大多數瀏覽器通過這種方式緩存的圖標:如何強制ie11請求新的favicon?

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

但是,favicon仍然被緩存在ie11中。當我打開Netbeans上的調試時,控制器沒有收到任何請求。

注意事項:

  1. 在進入該網站的第一個圖標的作品。我只是不能代替 它登錄後。
  2. 我在地址欄中鍵入圖標網址,它返回正確的圖標。

我一直在環顧四周,但我找不到解決這個問題的辦法。 :<

回答

2

使用JavaScript來改變IE11的圖標:

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,火狐,IE11 + 。它不適用於IE10或更早版本,Opera 12.15或Safari 6.0.5(mac)。將此方法與您的favicon.ico?v = xxxx方法結合起來用於早期的瀏覽器。

0

警告:雖然這個答案是(在我看來)一個很好的建議,它不與IE11

工作中加入網址參數的常規圖標路徑更新圖標一個有用的技術和強制瀏覽器重新加載它。然而,當談到favicon加載時,瀏覽器和衆所周知的非常懶惰。因此,刷新您的圖標往往可能超出額外的URL參數技術的力量。我建議你試一試favicon.js。這個JavaScript庫被設計用來創建動態的圖標,並讓你做出令人驚歎的東西。

1

你確定它不只是本地緩存。我認爲問題在於IE11不想查找新的圖標並正在使用本地緩存的圖標。

試着強迫它獲取圖標。請參閱亞歷克斯在這裏的答案: How do I force a favicon refresh

您應該能夠按照以下步驟獲取您的設備上顯示在IE11上的新的圖標。

或者,您可以完全重命名favicon並使用帶鏈接標記的新名稱。 <link rel="shortcut icon" href="/images/new-favicon-name.ico" />

另一種巧妙的方法在同一個線程: How do I force a favicon refresh

使用文件的哈希作爲版本保證唯一的名稱。

+0

是的,它被緩存。是的,EI11不尋找新的圖標。 我在問題中提到過: 1.即使添加了一個類似於[hash query string](http:// stackoverflow)的$ {date.time} URL參數,瀏覽器也不會請求新的favicon。 com/questions/2208933/how-do-i-force-a-favicon-refresh/24166149#24166149) 2. favicon應該在用戶登錄後更改*。執行[硬刷新,重新啓動](http://stackoverflow.com/questions/2208933/how-do-i-force-a-favicon-refresh/5239747#5239747)仍然需要重新啓動後出現默認圖標。 – Maggie 2015-04-06 05:30:38

0

要更改圖標並確保顯示的是新圖標而不是舊圖標,一個簡單而虛擬的方法是更改圖標的名稱,您不必稱之爲圖標。 ICO,稱之爲anything.ico並把代碼通常行頭部分:

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

並上傳ICO文件:anything.ico(改變任何你想要的任何東西)。