火狐拡張開発:ブックマーク機能を追加するパッケージ
2861 ワード
ここ数日、火狐ブラウザにブックマークを追加する機能を書く必要があります.指定したブックマークフォルダにフォルダとウェブサイトを追加し、いくつかのオリジナルの方法をカプセル化する必要があります.
参考資料:
1. XPCOM nsINavBookmarkObserver(火狐オープンブックマークインタフェース)2.XPCOM nsINavBookmarksService(火狐オープンブックマークインタフェース)
3. Code Snippets Bookmarks(公式例)
第一歩:firefoxのBookmark APIの定数を導入する.
ステップ2:ルートブックマークツールバーのルートディレクトリにブックマークを追加します.
ステップ3:指定したディレクトリにブックマークフォルダを追加します.
ステップ4:指定したurlのブックマークを削除します.
参考資料:
1. XPCOM nsINavBookmarkObserver(火狐オープンブックマークインタフェース)2.XPCOM nsINavBookmarksService(火狐オープンブックマークインタフェース)
3. Code Snippets Bookmarks(公式例)
第一歩:firefoxのBookmark APIの定数を導入する.
var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
.getService(Components.interfaces.nsINavBookmarksService);
var htService = Components.classes["@mozilla.org/browser/nav-history-service;1"].
getService(Components.interfaces.nsINavHistoryService);
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var menuFolder = bmsvc.bookmarksMenuFolder; //
var toolbarFolder = bmsvc.toolbarFolder; //
ステップ2:ルートブックマークツールバーのルートディレクトリにブックマークを追加します.
function addUrl(name, url) {
var uri = ioService.newURI(url, null, null);
if (!bmsvc.isBookmarked(uri)) {//
bmsvc.insertBookmark(bmsvc.toolbarFolder, uri,bmsvc.DEFAULT_INDEX, name);//
}
}
ステップ3:指定したディレクトリにブックマークフォルダを追加します.
function addFolderUrl(folderType, folderName) {
var query = htService.getNewQuery();
var options = htService.getNewQueryOptions();
query.setFolders([toolbarFolder], 1);
var result = htService.executeQuery(query, options);
var rootNode = result.root;
var childFolder = 0;
rootNode.containerOpen = true;
//
for (var i = 0; i < rootNode.childCount; i++) {
var node = rootNode.getChild(i);
if (node.type == node.RESULT_TYPE_FOLDER && node.title == folderName) {
childFolder = node.itemId;
//
var newFolderId = bmsvc.createFolder(folderType, folderName, bmsvc.DEFAULT_INDEX);
break;
}
}
rootNode.containerOpen = false;
};
ステップ4:指定したurlのブックマークを削除します.
function remove(url){
var uri = ioService.newURI(url, null, null);
var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {});
bmsvc.removeItem(bookmarksArray);
},