如何强制 ie11 请求新的图标?
How to force ie11 to request a new favicon?
我在一个网站上工作,该网站根据登录的用户详细信息更改其网站图标。控制器在后端处理此请求并为该网站发送适当的网站图标。到目前为止,我通过这个避免了大多数浏览器缓存的图标:
<link rel="shortcut icon" type="image/x-icon" href="resources/favicon.ico?v=${date.time}"/>
但是,该图标仍然缓存在 ie11 中。当我在 Netbeans 上打开调试时,控制器没有收到任何请求。
注意事项:
- 进入站点后的第一个图标有效。我只是无法替代
登录后。
- 我在地址栏中输入了网站图标 url,它返回了正确的网站图标。
我一直在四处寻找,但找不到解决这个问题的办法。 :<
警告:虽然这个答案(在我看来)是一个很好的建议,但它不适用于 IE11
向常规网站图标路径添加 URL 参数是更新网站图标并强制浏览器重新加载它的有用技术。然而,众所周知,浏览器在加载网站图标时非常懒惰。因此,经常刷新您的网站图标可能超出了额外 URL 参数技术的能力。
我建议你尝试一下 favicon.js。这个 JavaScript 库旨在创建动态网站图标,让您可以做一些非常了不起的事情。
您确定它不只是缓存在本地。我认为问题是 IE11 不想寻找新的图标,而是使用本地缓存的图标。
尝试强制它获取网站图标。请在此处查看 Alex 的回答:
How do I force a favicon refresh
按照这些步骤,您应该能够在使用 IE11 的设备上显示新的网站图标。
或者,您可以完全重命名网站图标并使用带有 link 标签的新名称。
<link rel="shortcut icon" href="/images/new-favicon-name.ico" />
同一线程中的另一个巧妙技巧:
How do I force a favicon refresh
使用文件的哈希作为版本保证唯一名称。
使用 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、Firefox、IE11+。它不适用于 IE10 或更早版本、Opera 12.15 或 Safari 6.0.5(mac)。将此方法与早期浏览器的 favicon.ico?v=xxxx 方法结合使用。
要更改网站图标并确保显示新的网站图标而不是旧的,一个简单而愚蠢的方法是更改网站图标的名称,您不必调用它 favicon.ico,调用它 anything.ico 并将通常的代码行放在 head 部分:
<link rel="shortcut icon" href="interdit.ico">
并上传 ico 文件:anything.ico(随意更改任何内容)。
我在一个网站上工作,该网站根据登录的用户详细信息更改其网站图标。控制器在后端处理此请求并为该网站发送适当的网站图标。到目前为止,我通过这个避免了大多数浏览器缓存的图标:
<link rel="shortcut icon" type="image/x-icon" href="resources/favicon.ico?v=${date.time}"/>
但是,该图标仍然缓存在 ie11 中。当我在 Netbeans 上打开调试时,控制器没有收到任何请求。
注意事项:
- 进入站点后的第一个图标有效。我只是无法替代 登录后。
- 我在地址栏中输入了网站图标 url,它返回了正确的网站图标。
我一直在四处寻找,但找不到解决这个问题的办法。 :<
警告:虽然这个答案(在我看来)是一个很好的建议,但它不适用于 IE11
向常规网站图标路径添加 URL 参数是更新网站图标并强制浏览器重新加载它的有用技术。然而,众所周知,浏览器在加载网站图标时非常懒惰。因此,经常刷新您的网站图标可能超出了额外 URL 参数技术的能力。
我建议你尝试一下 favicon.js。这个 JavaScript 库旨在创建动态网站图标,让您可以做一些非常了不起的事情。
您确定它不只是缓存在本地。我认为问题是 IE11 不想寻找新的图标,而是使用本地缓存的图标。
尝试强制它获取网站图标。请在此处查看 Alex 的回答: How do I force a favicon refresh
按照这些步骤,您应该能够在使用 IE11 的设备上显示新的网站图标。
或者,您可以完全重命名网站图标并使用带有 link 标签的新名称。
<link rel="shortcut icon" href="/images/new-favicon-name.ico" />
同一线程中的另一个巧妙技巧: How do I force a favicon refresh
使用文件的哈希作为版本保证唯一名称。
使用 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、Firefox、IE11+。它不适用于 IE10 或更早版本、Opera 12.15 或 Safari 6.0.5(mac)。将此方法与早期浏览器的 favicon.ico?v=xxxx 方法结合使用。
要更改网站图标并确保显示新的网站图标而不是旧的,一个简单而愚蠢的方法是更改网站图标的名称,您不必调用它 favicon.ico,调用它 anything.ico 并将通常的代码行放在 head 部分:
<link rel="shortcut icon" href="interdit.ico">
并上传 ico 文件:anything.ico(随意更改任何内容)。