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