深入研究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特定的触摸图标元标记分开的实体。这意味着网站管理员可以(以某种方式)覆盖屏幕截图获取机制,并在“热门网站”列表中仅显示一个漂亮的图标。因此,问题仍然在于如何实现这一目标?此时的图标图标逻辑还是一个谜。
#1 楼
经过大量测试,我能够在我的网站上使用大图标(在Firefox 57.0.4中)。我认为使用大(> 100px)图标并指定大小非常重要:
<link rel="icon" type='image/png' sizes='256x256' href="/applogo_256.png"/>
另外,Firefox似乎非常积极地缓存预览,因此我需要使用新的Profile来立即查看更改。
评论
Opera的快速拨号可能与此相同。