MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

bookmarks.getChildren()

bookmarks.getChildren() は、ブックマークフォルダの ID を BookmarkTreeNode で指定し、その直下にあたる子要素をすべて取得します。

構文

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

Parameters

id
取得したい子要素を持つフォルダ ID を指定する string です。
callback
子ノードのリストが取得された際に実行される関数です。この関数には以下の引数が渡ります。
results
各要素が 1 つの子ノードを表す、bookmarks.BookmarkTreeNodearray です。要素の順序は、UI に表示されているのと同じ順番です。現在、セパレータの有無は結果に含まれません。指定したノードに子要素が含まれていなかった場合、results は空配列となります。

ブラウザ実装状況

Chrome Edge Firefox Firefox for Android Opera
Basic Support Yes No 45.0 No 33

使用例

基本的な使い方

function gotChildren(children) {
  console.log(children);
}

chrome.bookmarks.getChildren(bookmarkItemId, gotChildren);

指定したフォルダでブックマークを切替

以下の例は、フォルダを BookmarkTreeNode で指定し、そのフォルダに新しいブックマークを作成するものです。ただし、既に同じ名前のブックマークがあった場合は、逆に既存のブックマークを削除することとします。このとき新しいブックマークは作成されません。

function toggleBookmark(folderNode, title, url) {
  chrome.bookmarks.getChildren(folderNode.id, function(results) {
    let node = results.find(function(el) {
      return el.title === title;
    });

    // ブックマークが存在する場合は削除する
    // そうでなければ新しく作成する

    if (node !== undefined) {
      chrome.bookmarks.remove(node.id);
    } else {
      chrome.bookmarks.create({
        parentId: folderNode.id,
        title: title,
        url: url
      });
    }
  });
}

先の toggleBookmark() 関数は、folderNode で指定した BookmarkTreeNode の中に既に存在しているすべてのブックマークのリストを取得するため、最初に bookmarks.getChildren() を呼び出しています。

コールバックに指定された匿名関数には results という引数が 1 つ渡されます。この引数は、フォルダの直下にある子要素をすべて含んだ配列です。まず初めに、与えられたタイトルを持つノードがフォルダに存在するかどうかを調べます。ここでは Array.find() メソッドを使い、タイトルが等しいかどうかをコールバック内で判定しています。

マッチするノードがあった場合(すなわち、nodeundefined ではない場合)、指定した title を持つブックマークが既に存在していたことが分かったので、既存のブックマークを削除するために bookmarks.remove() を呼び出します。

そうではなかった場合、新しいブックマークを作成するために bookmarks.create() が呼び出します。この際、引数 folderNode で与えられていたフォルダ ID を新しい親フォルダの ID に指定し、合わせて titleurl も指定します。

謝辞

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

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

ドキュメントのタグと貢献者

 このページの貢献者: hashedhyphen
 最終更新者: hashedhyphen,