bookmarks.search()

bookmarks.search() 函数会搜索与给定查询匹配的书签树节点。

如果任何输入参数无效或类型不正确,此函数将抛出异常;请在 控制台 中查看错误消息。这些异常没有错误 ID,且消息本身可能会更改,因此请不要编写试图解析它们的代码。

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

语法

js
let searching = browser.bookmarks.search(
  query                  // string or object
)

参数

query

一个 stringobject,用于描述要执行的查询。

如果 query 是一个字符串,它包含零个或多个以空格分隔的搜索词。每个搜索词在匹配书签的 URL 或标题时,如果它是其中的一个子字符串,则匹配成功。匹配不区分大小写。要使书签匹配查询,必须匹配查询中的所有搜索词。

如果 query 是一个对象,它包含零个或多个以下 3 个属性:querytitleurl,下面将对此进行描述。要使书签匹配查询,必须匹配所有属性的词。

query 可选

一个 string,指定一个或多个要匹配的词;格式与 query 参数的字符串形式相同。如果不是字符串,则抛出异常。

url 可选

一个 string,必须与书签的 URL 完全匹配。匹配不区分大小写,并且会忽略末尾的斜杠。

如果传递了无效的 URL,该函数将抛出异常。

title 可选

一个 string,必须与书签树节点的标题完全匹配。匹配区分大小写。

返回值

一个 Promise,它将以一个 bookmarks.BookmarkTreeNode 对象数组的形式完成,每个对象代表一个匹配的书签树节点。结果按节点创建的顺序返回。如果没有找到结果,则数组为空。

bookmarks.search() 返回的 BookmarkTreeNodes—即使是 "folder" 类型的节点—缺少 children 属性。要获取完整的 BookmarkTreeNode,请使用 bookmarks.getSubTree()

示例

此示例记录所有书签的 ID

js
function onFulfilled(bookmarkItems) {
  for (const item of bookmarkItems) {
    console.log(item.id);
  }
}

function onRejected(error) {
  console.log(`An error: ${error}`);
}

browser.bookmarks.search({}).then(onFulfilled, onRejected);

此示例检查当前活动标签页是否已添加书签

js
function onFulfilled(bookmarkItems) {
  if (bookmarkItems.length) {
    console.log("active tab is bookmarked");
  } else {
    console.log("active tab is not bookmarked");
  }
}

function onRejected(error) {
  console.log(`An error: ${error}`);
}

function checkActiveTab(tab) {
  browser.bookmarks.search({ url: tab.url }).then(onFulfilled, onRejected);
}

browser.browserAction.onClicked.addListener(checkActiveTab);

扩展程序示例

浏览器兼容性

注意: 此 API 基于 Chromium 的 chrome.bookmarks API。本文档源自 Chromium 代码中的 bookmarks.json