topSites.get()

获取包含用户经常访问和最近访问的页面的信息的数组。

浏览器会保留用户经常访问和最近访问的页面列表。它们使用此列表来帮助用户轻松返回这些地方。例如,Firefox 默认会在“新标签页”中提供最常访问页面的列表。

为了确定列表中显示哪些页面以及它们的显示顺序,浏览器会结合“频率”(用户访问页面的次数)和“最近性”(用户最近访问页面的时间)。

然后,浏览器可能会对此列表应用进一步的过滤,然后再将其呈现给用户。例如,在 Firefox 中,“新标签页”仅为每个域名列出一个页面,并且用户可以阻止页面出现在列表中。

topSites.get() API 使扩展程序能够访问此列表。如果不带任何选项调用,它将提供经过过滤的页面列表,即“新标签页”中显示的那个。但是,通过提供各种选项,扩展程序可以获取未经过滤的页面列表。

这是一个异步函数,返回一个 Promise

要使用 topSites API,您必须拥有“topSites”API 权限

语法

js
let gettingTopSites = browser.topSites.get(
    options  // object
)

参数

options

object。用于修改返回的页面列表的选项。这可能包含以下任何属性:

includeBlocked 可选

Boolean。包含用户已从“新标签页”中移除的页面。默认为 false

includeFavicon 可选

Boolean。在结果中包含图标(favicon),对于有可用图标的页面。默认为 false

includePinned 可选

Boolean。包含用户已固定到 Firefox 新标签页的网站。默认为 false

includeSearchShortcuts 可选

Boolean。包含出现在 Firefox 新标签页上的搜索快捷方式。默认为 false

limit 可选

Integer。要返回的页面数量。这必须是介于 1 到 100(含)之间的数字。默认为 12。

newtab 可选

Boolean。如果包含,则该方法返回用户打开新标签页时返回的页面列表。如果包含且设置为 true,则该方法将忽略 limitincludeFavicon 以外的所有其他参数。默认为 false

onePerDomain 可选

Boolean。每个域名只包含一个页面。默认为 true

返回值

一个 Promise。此 Promise 将以一个 MostVisitedURL 对象数组(对应于浏览器“新标签页”中列出的每个页面)来 fulfilled。如果发生错误,Promise 将以错误消息拒绝。

示例

此代码记录“新标签页”中所有页面的标题和 URL。

js
function logTopSites(topSitesArray) {
  for (const topSite of topSitesArray) {
    console.log(`Title: ${topSite.title}, URL: ${topSite.url}`);
  }
}

function onError(error) {
  console.error(error);
}

browser.topSites.get().then(logTopSites, onError);

此代码记录所有热门页面的标题和 URL,包括用户已阻止的页面,并且可能包含同一域名的多个页面。

js
function logTopSites(topSitesArray) {
  for (const topSite of topSitesArray) {
    console.log(`Title: ${topSite.title}, URL: ${topSite.url}`);
  }
}

function onError(error) {
  console.error(error);
}

browser.topSites
  .get({
    includeBlocked: true,
    onePerDomain: false,
  })
  .then(logTopSites, onError);

扩展程序示例

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.topSites API。