在最新的稳定版Firefox(版本57)(称为Quantum)中,用户控制的新标签上的“热门网站”功能已更改。以前,无论网站如何,仅显示部分屏幕截图的粗略缩略图,并且无法控制。现在,某些网站带有一个大图标,而其他网站仅显示为上述缩略图,并且其图标被覆盖在角落。获得大图标处理的示例站点:Amazon,TechCrunch,Slack和GitHub。进行了favicon处理的缩略图示例站点:Slashdot,Steam,Kongregate,Gizmodo。据我所知,对此没有特别的押韵或原因。我还没有在“顶级站点”功能的任何地方找到任何文档。


深入研究Firefox源代码一段时间之后,我发现browser\extensions\activity-stream\lib\TopSitesFeed.jsm,其中包含以下代码部分:

/**
 * Get an image for the link preferring tippy top, rich favicon, screenshots.
 */
async _fetchIcon(link) {
  // Check for tippy top icon and rich icon.
  this._tippyTopProvider.processSite(link);
  let hasTippyTop = !!link.tippyTopIcon;
  let hasRichIcon = link.favicon && link.faviconSize >= MIN_FAVICON_SIZE;

  if (!hasTippyTop && !hasRichIcon) {
    this._requestRichIcon(link.url);
  }

  // Request a screenshot if needed.
  if (!hasTippyTop && !hasRichIcon && !link.screenshot) {
    const {url} = link;
    await Screenshots.maybeCacheScreenshot(link, url, "screenshot",
      screenshot => this.store.dispatch(ac.BroadcastToContent({
        data: {screenshot, url},
        type: at.SCREENSHOT_UPDATED
      })));
  }
}


以前,MIN_FAVICON_SIZE定义为96,我以像素为单位。

TippyTop,我看到正在采取一些优惠措施适用于Amazon,Reddit,Twitter,Facebook和其他一些网站(在Firefox内部访问resource://activity-stream/data/content/tippytop/以获取相关的JSON文件+图像),我想这意味着Firefox包含特殊图标以及最终二进制文件,用于特定网站,但不是所有网站我提到过。例如,

TechCrunch不在TippyTop列表中,而只有16x16的图标。但是,Firefox显示图标而不是屏幕截图。 TechCrunch网站上的Apple触摸图标超过了96像素。因此,也许其中之一正在被使用。我通常认为网站图标是与Apple特定的触摸图标元标记分开的实体。这意味着网站管理员可以(以某种方式)覆盖屏幕截图获取机制,并在“热门网站”列表中仅显示一个漂亮的图标。因此,问题仍然在于如何实现这一目标?此时的图标图标逻辑还是一个谜。

评论

Opera的快速拨号可能与此相同。

#1 楼

经过大量测试,我能够在我的网站上使用大图标(在Firefox 57.0.4中)。

我认为使用大(> 100px)图标并指定大小非常重要:

<link rel="icon" type='image/png' sizes='256x256' href="/applogo_256.png"/>


另外,Firefox似乎非常积极地缓存预览,因此我需要使用新的Profile来立即查看更改。