※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

基本情報

Cu.import("resource://gre/modules/PlacesUtils.jsm");
Cu.import("resource:///modules/PlacesUIUtils.jsm");

id の取得

既存のフォルダの id

フォルダ コード
すべてのブックマーク PlacesUIUtils.allBookmarksFolderId
ブックマークツールバー PlacesUtils.toolbarFolderId
ブックマークメニュー PlacesUtils.bookmarksMenuFolderId
未整理のブックマーク PlacesUtils.unfiledBookmarksFolderId
タグ PlacesUtils.tagsFolderId
Placesルート PlacesUtils.placesRootId
タグはあまり使わないと思うし、Placesルートにいたっては通常は使うことは無いと思うが、Placesデータベース内では普通のフォルダとして存在する。

id からアイテムの情報を取得

var type           = PlacesUtils.bookmarks.getItemType(id);
var uri            = PlacesUtils.bookmarks.getBookmarkURI(id);
var title          = PlacesUtils.bookmarks.getItemTitle(id);
var index          = PlacesUtils.bookmarks.getItemIndex(id);
var parentFolderId = PlacesUtils.bookmarks.getFolderIdForItem(id);
var folderReadonly = PlacesUtils.bookmarks.getFolderReadonly(id); 

node の取得

フォルダ id からフォルダ node を取得

var result = PlacesUtils.getFolderContents(folderId);
var node = result.root; 

取得した node で操作

PlacesUtils によるノードの判別

情報古い
PlacesUtils.nodeIsFolder(node);
PlacesUtils.nodeIsBookmark(node);
PlacesUtils.nodeIsSeparator(node);
PlacesUtils.nodeIsVisit(node);
PlacesUtils.nodeIsURI(node);
PlacesUtils.nodeIsQuery(node);
PlacesUtils.nodeIsReadOnly(node);
PlacesUtils.nodeIsHost(node);
PlacesUtils.nodeIsDay(node);
PlacesUtils.nodeIsTagQuery(node);
PlacesUtils.nodeIsContainer(node);
PlacesUtils.nodeIsHistoryContainer(node);
PlacesUtils.nodeIsDynamicContainer(node);
PlacesUtils.nodeIsLivemarkContainer(node);
PlacesUtils.nodeIsLivemarkItem(node);

フォルダノードからフォルダの中身にアクセスし、処理する

Components.utils.import("resource://gre/modules/Services.jsm");
 
var folderNode = ??? //アクセスしたいフォルダのノード
 
folderNode.containerOpen = true; // フォルダを開く
var nodeCount = folderNode.childCount;
for (var i = 0; i < nodeCount; i++) {
	let childNode = folderNode.getChild(i);
	switch (childNode.type) {
		case childNode.RESULT_TYPE_URI :
			// URIアイテムの処理。例えばエラーコンソールにタイトルとURLを列挙
			Services.console.logStringMessage("Title:" + childNode.title + "\nURL:" + childNode.uri);
			break;
		case childNode.RESULT_TYPE_FOLDER :
			// フォルダの処理。例えば再帰処理
			arguments.callee(childNode);
			break;
		case childNode.RESULT_TYPE_SEPARATOR :
			// セパレーターの処理
			break;
		case}
}
folderNode.containerOpen = false; // フォルダを閉じる

注釈(Annotation)


その他の情報