bookmarks.search()

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

如果任何输入参数无效或类型不合适,此函数将抛出异常;请在 控制台 中查看错误消息。异常没有错误 ID,消息本身也可能发生变化,因此请不要编写尝试解释它们的代码。

这是一个返回 Promise 的异步函数。

语法

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

参数

查询

一个 字符串对象,描述要执行的查询。

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

如果 query 是一个 对象,它包含零个或多个 3 个属性:querytitleurl,如下所述。为了使书签与查询匹配,必须匹配所有属性的词。

query 可选

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

url 可选

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

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

title 可选

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

返回值

一个 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);

扩展示例

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

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