--- title: bookmarks.getSubTree() slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree tags: - API - Add-ons - Bookmarks - Extensions - Method - Non-standard - Reference - WebExtensions - getSubTree translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree ---

{{AddonSidebar()}}

bookmarks.getSubTree() は、ID を指定して {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} を非同期に取得するメソッドです。

対象がフォルダの場合、children プロパティを再帰的にたどることで、すべての子要素にアクセスすることができます。

構文

browser.bookmarks.getSubTree(
  id,      // 文字列
  callback // 関数
)

引数

id
取得したい部分木のルートノードに対応する ID を表す {{jsxref("string")}} です。
callback
リクエストしたノードが取得された際に呼び出される関数です。この関数には以下の引数が渡ります。
results
指定した ID に対応する {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトが 1 つ含まれた配列

ブラウザ実装状況

{{Compat("webextensions.api.bookmarks.getSubTree")}}

以下の例は、指定したノードの配下にある部分木を再帰的に出力するものです。

function makeIndent(indentLength) {
  return ".".repeat(indentLength);
}

function logItems(bookmarkItem, indent) {
  if (bookmarkItem.url) {
    console.log(makeIndent(indent) + bookmarkItem.url);
  } else {
    console.log(makeIndent(indent) + "Folder");
    indent++;
  }
  if (bookmarkItem.children) {
    for (child of bookmarkItem.children) {
      logItems(child, indent);
    }
  }
  indent--;
}

function logSubTree(bookmarkItems) {
  logItems(bookmarkItems[0], 0);
}

function handleClick() {
  var subTreeID = "unfiled_____";
  chrome.bookmarks.getSubTree(subTreeID, logSubTree);
}

chrome.browserAction.onClicked.addListener(handleClick);

{{WebExtExamples}}

謝辞

この API は Chromium の chrome.bookmarks API に基づいています。また、このドキュメントは bookmarks.json における Chromium のコードから作成されています。

Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。