You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome中Rails应用页面跳转时Favicon消失问题求助

解决Chrome v64中Rails Turbolinks跳转时Favicon消失的问题

嘿,这个Chrome 64和Turbolinks搭配的favicon bug我之前踩过坑!当时折腾了好一阵才找到靠谱的解决办法,给你分享几个有效的方案:

  • 强制Turbolinks触发favicon重新加载
    Chrome 64在Turbolinks页面切换时,会跳过对head里favicon标签的重新解析,哪怕标签存在也不加载。我们可以在application.js里加一段回调,每次页面加载完成后手动重置favicon的href属性,逼Chrome重新识别:

    document.addEventListener('turbolinks:load', function() {
      const faviconLink = document.querySelector('link[rel="icon"]');
      if (faviconLink) {
        const tempHref = faviconLink.href;
        faviconLink.href = '';
        faviconLink.href = tempHref;
      }
    });
    

    这个方法不会影响Turbolinks的正常性能,只是做了个小触发动作。

  • 改用绝对路径指向public文件夹的favicon
    如果你之前用的是asset_path生成的动态路径,试试直接指定public下的绝对路径,避免Turbolinks切换时的路径解析问题。在layouts/application.html.erb里修改favicon标签:

    <%= favicon_link_tag '/favicon.ico', rel: 'icon', type: 'image/x-icon' %>
    

    这样Chrome每次切换页面都能直接定位到public里的图标文件,不会因为路径变化找不到。

  • 临时禁用特定页面的Turbolinks(不推荐长期用)
    如果只是个别页面出问题,你可以给对应链接加上data-turbolinks="false",让页面强制刷新:

    <%= link_to '目标页面', target_path, data: { turbolinks: false } %>
    

    不过这个办法会丢掉Turbolinks的性能优势,所以优先用前两个方案。

另外别忘了检查下Chrome的缓存!有时候旧的favicon缓存会干扰,你可以打开开发者工具(F12),到Application面板里清空存储缓存,确保新图标能正常加载。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:10:37