Chrome 中的 history.pushState 会触发网站图标请求

14

代码:

var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname +"?"+ queryStr; 
window.history.pushState({path:newurl},'',newurl)

当前情况:

每次调用 window.history.pushState() 时会快速发出favicon请求。 每次调用此函数时,它都会在网络上请求favicon。

预期情况:

应该只在页面加载时加载favicon,不希望在每个window.history.pushState()请求中加载favicon。

在HTML页面中Favicon路径链接如下:

<!-- Favicon -->
  <link rel="icon" type="image/png" href="../img/icon/favicon-16x16.png" sizes="16x16">
  <link rel="icon" type="image/png" href="../img/icon/favicon-32x32.png" sizes="32x32">
  <link rel="icon" type="image/png" href="../img/icon/favicon-96x96.png" sizes="96x96">
1个回答

9

看起来是Chromium浏览器的一个bug。请参见此开放问题

但如果您使用base64图像作为href,则似乎有一种解决方法,请求将不会发生。

<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">

请看这个问题。

在Chrome浏览器中,当长按“返回”按钮时,会弹出历史记录中所有链接的列表供您选择。这些链接都有图标和文本。因此,在将页面添加到历史记录时,请求favicon似乎是很正常的行为。我不认为这是一个错误。 - Siderite Zackwehdex
似乎合理。我在回答中表达了我的怀疑“看起来像个 bug”,但可能并不是,这就是为什么自 2012 年以来它一直是开放的原因。 - Ankit Singh
谢谢更新。那么这个问题有任何替代解决方案吗?我不想在每次调用window.history.pushState()时加载favicon。 - Rohìt Jíndal
您可以将图标转换为 base64 图像,并将其放置在 favicon 链接的 href 中。 - Ankit Singh
1
谢谢你的帮助 :) - Rohìt Jíndal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接